我遇到了 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
实例?
最佳答案
我认为你应该这样做:
_dbContext.Posts.Add(new PostDataModel() {
Content = "Lorem ipsum dolor...",
Author = new AccountDataModel() {
Login = "Test",
FirstName = "John",
LastName = "Smith"
}});
_dbContext.SaveChanges();
关于c# - 在 Entity Framework Core 中重用记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51143096/