gpt4 book ai didi

linq - 在 Linq to SQL 中,为什么分配相关实体会创建 ChangeSet 插入?

转载 作者:行者123 更新时间:2023-12-01 04:38:50 25 4
gpt4 key购买 nike

为什么下面要向 DataContent ChangeSet 添加插入(新地址的),我如何才能阻止它这样做?

var db = new DataClasses1DataContext();
var a = new Address();
a.StateProvince = db.StateProvinces.First();
Console.WriteLine(db.GetChangeSet().Inserts.Count);

最佳答案

Address a = new Address();

这将创建一个新的 Address 实例。它不以任何方式与数据上下文关联。

db.StateProvinces.First();

这会加载 StateProvince 的一个实例。该实例由加载它的数据上下文 (db) 跟踪。 db 正在等待来自此实例的更改通知。

a.StateProvince =

这是对属性的赋值。如果您检查自动生成的属性“StateProvince”,您会看到它还会更新 StateProvince 实例上的相关属性“Addresses”。现在 StateProvince 实例已经改变。这会导致 db 收到通知,结果 - 地址实例现在被 db 作为一个新的、准备插入的实例进行跟踪。

最简单的方法是,在使用 db 之前,设置:

db.ObjectTrackingEnabled = false;

附言。 var 很棒,就像热狗一样棒。

关于linq - 在 Linq to SQL 中,为什么分配相关实体会创建 ChangeSet 插入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3289404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com