entity-framework - 在 Entity Framework 中创建新对象时如何添加子关系

标签 entity-framework

我有一个 Entity Framework 项目设置。它我有四个表和三个实体(“A”、“B”和“C”)。 A 和 B 之间、A 和 C 之间是 1:n 关系,B 和 C 之间是 n:n 关系。

alt text

我使用以下代码尝试添加新的“B”实体:

A t = null;
if (this.MyA == null)
{
    t = new A()
    {
        EntityKey = this.MyAReference.EntityKey,
        AId = (Guid)this.MyAReference.EntityKey.EntityKeyValues[0].Value
    };
}
else
{
    t = this.MyA;
}
this.MyA = null;
context.Attach(t);
this.MyA = t;

“B”对象(“t​​his”)具有“C”对象的子集合。这些“C”对象已存在于数据库中,但与新对象无关(显然)。当我调用“SaveChanges()”时,它会引发异常,因为它尝试将所有子“C”对象添加到数据库中的新对象。

如何让它只在“Table_JoinBC”中创建引用,而不尝试重新创建“C”对象?

感谢您的帮助。

最佳答案

如果使用 stub entities 会更容易

您声明您想要添加一个新的 B 对象。要添加 B 对象,您需要一个 A 对象

以下是使用 stub 实体的示例:

A myAObject = new A { A_Id = 5 };

Context.AttachTo("Aes", myAObject);

B myBObject = new B { B_ID = 6, A = myAObject);

Context.AddToBes(myBObject)
Context.SaveChanges();

关于entity-framework - 在 Entity Framework 中创建新对象时如何添加子关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3971419/

相关文章:

entity-framework - Entity Framework 预测

c# - 自引用循环导致 map 堆栈溢出

c# - linq to entities 无法将类型 Icollection 转换为类型 List

c# - EF Code First - 来自数据库的对象为空

.net - 无法使用ADO.NET Entity Framework 执行存储过程

entity-framework - 使用 EF 在两个数据库之间复制记录

c# - Elmah DDL 在由 context.Database.ExecuteSqlCommand (EF4.1) 运行时给出 sql 错误

c# - 是否支持导航属性的继承?

c# - rc1.final 中的 User.Identity 中不存在 getUserId

entity-framework - Visual Studio 2010 中的 EntityConfiguration 和 ContextBuilder 在哪里?