方案
我有像
这样的表格(ID, Email, Password)
(ID, UserID_FK, First, Last, Created_On, Created_By_FK)
这是我创建新用户帐户的方式
Users us = new Users
{
Email = 'xyz@example.com',
Password = 123
};
User_Profile up = new User_Profile
{
First = 'Kamalpreet',
Last = 'Singh',
Created_On = DateTime.Now
};
us.User_Profile.Add(up);
Context x = new Context();
x.Users.Add(us);
db.Save();
以上代码在数据库中创建以下记录 -
用户表 -
ID = 100
Email = xyz@example.com
Password = 123
User_Profile表 -
ID = 1
UserID_FK = 100
First = Kamalpreet
Last = Singh
Created_On = 2016-08-06 10:40:10.000
Created_By_FK = NULL
问题
在User_Profile表中,为什么Users(ID)
仅被复制到User_Profile(UserID_FK)
表而不会被复制到User_Profile(Created_By_FK)
UserID_FK和Created_By_FK列都是对用户(ID)表的外键引用。
答案 0 :(得分:1)
当您首先生成数据库DbContext时,您将获得两个要添加的集合(如果您设置了两个关系 - 每个键一个)。例如,您应该看到:
然后,您可以将配置文件添加到两个集合,以便在持久化时正确更新两个外键。实体框架会跟踪您已将相同对象引用添加到两个集合的事实,并将正确保存它。
注意:另一个选项是保存用户,然后将您获得的ID放在两个外键属性上,但这可能效率较低。