我遇到了一个问题,其中EF试图重复插入同一模型实例的记录。下面有更多详细信息。
数据模型:
public class PostDataModel
{
public int Id { get; set; }
public string Content { get; set; }
public AccountDataModel Author { get; set; }
}
public class AccountDataModel
{
public int Id { get; set; }
public string Login { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
因此,首先,我创建一个帐户并将其存储:
var account = new AccountDataModel() {
Login = "Test",
FirstName = "John",
LastName = "Smith"
};
// Store new account
_dbContext.Accounts.Add(account);
_dbContext.SaveChanges();
然后,我要存储该帖子,并在我的PostDataModel
中为author属性使用相同的帐户模型实例。
// Store post
_dbContext.Posts.Add(new PostDataModel() {
Content = "Lorem ipsum dolor...",
Author = account // Here is my problem
});
_dbContext.SaveChanges(); // 'UNIQUE constraint failed: Accounts.Id'.
我的问题是,当存储帖子时,我拥有用于存储帐户的Author
属性是相同的account
实例,那么EF试图将我的帐户存储两次(并且由于有一个唯一的约束集,会引发错误。
那是为什么?如何将帖子作者正确链接到先前存储的AccountDataModel
实例?
答案 0 :(得分:-1)
我认为您应该这样做:
_dbContext.Posts.Add(new PostDataModel() {
Content = "Lorem ipsum dolor...",
Author = new AccountDataModel() {
Login = "Test",
FirstName = "John",
LastName = "Smith"
}});
_dbContext.SaveChanges();