1

使用实体框架,我在 A 类和 B 类之间构建了一对一的关系(为简洁起见)。

class A
{
    // Some other stuff

    // Relationship to class B
    public B B { get; set; }
}

class B
{
    // Some other stuff

    // Relationship to class A
    [Required]
    public A A { get; set; }
}

当我从我创建的上下文中调用 A 类的特定实体时,我想给它一个对 B 类新实例的引用:

// Again, simplified for brevity
A a = context.A.First()

B b = new B();

// In a roundabout way, they both get a reference to each other
a.B = b;
b.A = a;

context.Entry(a).State = EntityState.Modified;

context.SaveChanges();

我的问题是,一旦我这样做了,然后我回到执行此代码的函数,对象 A 没有对象 B 的引用,直到我触发断点并查看context.B's 列表。context.BB 类的列表包含 A 应该指向的对象,但 A 在我断点并查看列表之前没有它的引用。

有没有人有任何想法?

4

2 回答 2

1

您是否尝试过在类定义中创建AB属性?virtual请反馈,我不太确定,但这可能是问题所在。

于 2013-03-07T22:17:25.040 回答
1

A从上下文中提取,但我认为您需要以上下文理解的方式告诉它与 B 的新关系,例如:

context.Bs.Add(b); //context now knows about the new b entity
a.B = b;
context.Entry(a).State = EntityState.Modified; //I think this is needed only of a's scalar properties have changed? but there is no harm in adding it anyway
context.SaveChanges();

当 b 确实需要设置为已添加时,设置a.B=b;并将a 的对象图中的任何未设置实体设置为已修改(如 B)。context.Entry(a).State = EntityState.Modified;使用Add()会做到这一点。

于 2013-03-07T14:57:46.523 回答