LINQ to SQL - 关闭ObjectTrackingEnabled时关联丢失

时间:2010-07-15 17:20:46

标签: linq-to-sql sql-server-2000

我正在使用Linq-to-SQL(C#3.5)从我的数据库(SQL Server 2000)读取两个表,house和county。 House具有与县表中的ID列匹配的CountyID列。 County表有ID和CountyName列。数据库中没有关联 - 我在dbml文件中添加了它。 (父类=县,儿童类=众议院)

现在我可以查询House表并将县名称作为house.County.CountyName - 正是我想要的。

除非我将EnableObjectTracking设置为false,否则这很有用。我获得了大约3倍的性能提升,但House中的County子对象为null。

有解决方法吗?

1 个答案:

答案 0 :(得分:1)

当您将EnableObjectTracking设置为false时,您还会关闭延迟加载子实体。 MSDN说......

  

延迟加载需要对象   跟踪。只有以下三个   模式有效:

     

ObjectTrackingEnabled = false。   DeferredLoadingEnabled被忽略   推断是假的。这种行为   对应于只读   DataContext的。

     

ObjectTrackingEnabled = true。   DeferredLoadingEnabled = false。这个   情境对应于DataContext   允许用户加载对象   使用LoadWith指令绘制图形,   但它不会启用延期   负荷。

     

两者都设置为true。这是   默认值。

如果要保持禁用对象跟踪,可以使用LoadWith方法填充子实体。有关LoadWith

的更多信息,请参阅MSDN