如果我缓存整个表:
static List<Table1> table1Cache = context.Table1.ToList();
然后我用它来关联:
var context = new Context();
var t2 = new Table2();
t2.MyTable1Reference = table1Cache.Single(x=>x.Id == paramIntId);
context.SaveChanges();
由于第三行,将向 Table1 插入新行。EF 认为这是一个新实体。我知道我可以做一些事情,比如在创建上下文时总是附加缓存(每个请求我有 1 个上下文),或者使用 MyTable1ReferenceID = table1Cache.Single(x=>x.Id == paramIntId).Id;
但是它不安全,我有时会忘记,有一个好的解决方案吗?