テーブル全体をキャッシュする場合:
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();
3行目のため、新しい行がTable1に挿入されます。EFはそれが新しい実体であると考えています。コンテキストの作成時に常にキャッシュをアタッチする(リクエストごとに1つのコンテキストがある)、またはMyTable1ReferenceID = table1Cache.Single(x => x.Id == paramIntId).Id;を使用するなどのことができることを知っています。
しかし、それは安全ではありません、私は時々忘れることができます、良い解決策がありますか?