EF代码中的非零多对零关系首先是什么?

时间:2011-07-23 12:29:04

标签: c# asp.net-mvc entity-framework ef-code-first

我有一个经典的一对多关系,除了“很多”方面的每个项目都没有“一个”。这是我的表格:

会话

ID        IP
1         1.1.1.1
2         2.2.2.2

用户:

IP        NAME
1.1.1.1   John

...由以下POCO生成:

public class Session {
    public int     id   { get; set; }
    public long    ip   { get; set; }
}

public class User {
    [Key]
    public long    ip   { get; set; }
    public string  name { get; set; }
    public ICollection<Session> sessions { get; set; }
}

某些会话具有相应的用户(通过IP)。即使没有关联用户,我也希望保留IP,并且能够导航User.sessions。

通过上面的POCO,EF可以理解地从Session.ipUser.ip生成FK,从而阻止我插入具有与用户无关的IP的会话。使Session.ip为空可以允许我插入与用户无关的会话,但是我丢失了IP(它必须为空)。

有没有办法实现这个目标?

百万感谢。

1 个答案:

答案 0 :(得分:1)

我会像这样修改POCO类:

 public class Session
{
    public int id { get; set; }
    public long ip { get; set; }      
    public User User {get;set;}
}

public class User
{
    [Key]
    public int id { get; set; }
    public long ip { get; set; }
    public string name { get; set; }
    public ICollection<Session> sessions { get; set; }
}

这将在会话表上创建一个Nullable User_id字段,并且应该为您提供所需的结果。请注意,这已将ip作为User表上的PK删除,并将其更改为通用整数id。

希望这有帮助!

相关问题