c# - 在 Entity Framework Core 中重用记录

标签 c# entity-framework entity-framework-core

我遇到了 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/

相关文章:

c# - 如果没有安装 Visual Studio,程序将无法启动?

c# - Entity Framework : ObjectContext. ExecuteStoreQuery 产生分离的对象

asp.net-core - .NET Core 1.0 和 EntityFramework 7 不兼容

c# - 模拟一个对其参数有副作用的方法

c# - 何时何地调用 RemoveObserver

c# - 如何从 ActionFilterAttribute 访问 AppSettings

c# - Dapper/EF - 为什么当变量不在使用范围内时性能会提高

asp.net-core - 使用 EF Core Migration 更新现有列中的数据

C#:是否有一个干净的模式来找到与使用相结合的正确对象?

c# - Visual Studio 中单个 C# 项目的多个可执行文件