我正在使用EF 6.1.3。基本上我有两个班级:
public class User
{
public int Id { get; set; }
}
public class Card
{
public int Id { get; set; }
public string Name { get; set; }
public User CreatedBy { get; set; }
}
当然,检查表定义时,会在CreatedBy
Card
和Id
User
之间创建外键关系。 Card
现在有一个CreatedBy_Id
列。
我播种了一个默认的User
(Id = 1),它存储在我们称之为CurrentUser
的变量中。现在,当我想要输入一张卡片时:
context.Cards.Add(new Card
{
Name = "Card of Water",
CreatedBy = CurrentUser
});
context.SaveChanges();
我得到的结果是新Card
已创建,但CreatedBy
未存储CurrentUser
引用。而是创建了一个新的User
(Id = 2),这就是存储在新Card
的{{1}}中的内容。
我该如何纠正?感谢。
修改
在起始表单的CreatedBy
事件中, CurrentUser
在程序开头设置一个值。它被声明为全局变量:
Load
添加仅用于在Button中进行测试。上面的代码就是它的全部内容。
答案 0 :(得分:0)
find . -name "myfile.h" -delete
答案 1 :(得分:0)
要解决此问题,您需要在这两个表之间建立外键关系,如下所示:
public class User
{
[Key]
public int Id { get; set; } // primary key
}
public class Card
{
public int Id { get; set; }
public string Name { get; set; }
[ForeignKey("CreatedBy")]
public int UserId { get; set; } // Foreign Key
public virtual User CreatedBy { get; set; }
//use virtual keyword to allow lazy loading while execution
}
context.Cards.Add(new Card
{
Name = "Card of Water",
UserId = CurrentUser.Id
//No need to insert CreatedBy user object here as we are passing UserId
});
context.SaveChanges();