我有一个经典的一对多关系,除了“很多”方面的每个项目都没有“一个”。这是我的表格:
会话
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.ip
到User.ip
生成FK,从而阻止我插入具有与用户无关的IP的会话。使Session.ip
为空可以允许我插入与用户无关的会话,但是我丢失了IP(它必须为空)。
有没有办法实现这个目标?
百万感谢。答案 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。
希望这有帮助!