c# - 即使找到键, Entity Framework 也会为导航属性插入行

标签 c# entity-framework ef-database-first

我正在使用 Entity Framework 。我有一个表 Person,它在表 PersonCategory 上有一个外键。 Person Id 是一个自动递增的身份 (1,1)。每次我更新个人实体时, Entity Framework 都会为 PersonCategory 表插入一行,即使找到了类别也是如此。

我正在使用数据库优先设计。

class Person
{
  public string Name {get;set}
  public PersonCategory {get;set;}
}

class PersonCategory
{
  public int ID {get;set}
  public string Name{get;set;}
}

最佳答案

首先,您需要将现有的 PersonCategory 附加到上下文;

var myPersonCat = new PersonCategory { ID = 1, Name = "Foo" };
var myPerson = new Person { Name = "Bar", PersonCategory = myPersonCat };

context.PersonCategories.Attach(myPersonCat);    
context.People.Add(myPerson);

关于c# - 即使找到键, Entity Framework 也会为导航属性插入行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12157537/

相关文章:

c# - 获取 .NET 对象的内存地址 (C#)

c# - 触发 HttpClient 的更简单方法(可能没有任务)?

c# - ExecuteSqlCommand并行执行

mysql - 如何编辑多对多关系中的外键(数据库优先)

sql-server - 使用代码优先和数据库优先将 MVC3 模型映射到 MSSQL 2008 View

C# 类组织/结构 - 概括执行循环线性插值的类

c# - 无法从一种模型转换为另一种模型

c# - 在 Entity Framework 中,我有一个 id (int) 用于收集其他类的 id。如何将它从类转换为id?

entity-framework-4 - EF4 数据库第一个可配置架构

c# - 如何使用 itextsharp 从表结构的 PDF 中读取数据?