有一个代码使用单个linq上下文对象来处理多个表。更改某些值后,我需要在数据库中更新它们。它是通过SubmitChanges函数实现的,该函数应用所做的所有更改。代码看起来像这样:
MyDBDataContext ctx = new MyDBDataContext(connectionString);
first_table_object first = (from f in ctx.first_table_objects select f).FirstOrDefault();
first.property = 1;
second_table_object second = (from s in ctx.second_table_objects select s).FirstOrDefault();
second.property = 2;
//ctx.SubmitChanges();
ctx.SubmitChangesOnlyToTheSecondTable();
是否可以只更新一个表而不是提交所有更改?
答案 0 :(得分:1)
为此,您可以分离从第一个表中检索到的对象。您可以使用AsNoTracking()来实现。这将指示EF不要照顾从first_table_objects
first_table_object first = (ctx.first_table_objects.AsNoTracking().Select(s => s)).FirstOrDefault()