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

本文关键字:状态 代码 | 更新日期: 2023-09-27 18:14:22

我有一个多对多的关系,在继续阅读之前看看我的场景解释:EF 4.1代码优先:多对多

Ok,现在我可以通过执行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中添加信息。

任何想法?

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

你在哪里

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

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