EF 4.1代码优先 - 多对多 - 状态不变

时间:2013-05-19 18:33:20

标签: c# entity-framework ef-code-first

我有多对多的关系,请在继续阅读之前看到我在此处解释的情景: EF 4.1 Code First: Many to Many

好的,现在我可以通过Slauma提出的解决方案(见下文)将条目添加到相应的表中,但我不想在其中一个表(表B)中插入任何条目,因为它有固定的条目(只读)。那怎么实现呢?我将其标记为未更改但不起作用。

我执行以下操作:

A a = new A() { PropertyA1 = something_1,
            PropertyA2 = something_2,
            PropertyA3 = something_3 };
a.Bs = new List<B>();

foreach (.....)
{
  B b = new B() { ..... }
  a.Bs.Add(b);
}

context.A.Add(a);

// Below loop is not working
foreach (var entry in context.ChangeTracker.Entries()
        .Where(e => e.State == EntityState.Added && e.Entity is SomeEntity))
{
        entry.State = EntityState.Unchanged;
}

context.SaveChanges();

如果删除以前的foreach,信息会正确添加到表A和链接表C中,但也会在B中添加,我不希望在B中添加信息。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

你在哪里

B b = new B() { ..... }

您必须从数据库中获取现有B并将其添加到a.Bs