我有一个数据库,其中包含一个由另一个表引用的简单flyweight表。我们分别称之为类别和产品。Linq - 出现意外的唯一性约束类型的行为
Product表中有几列,其中一列是CategoryID表的CategoryID的外键列(带约束完成)。这很简单,我在这个特定的数据库中有很多。
我在Visual Studio 2008中使用Linq在我的应用程序中表示此数据。这两个表都是正常的,并且它们的属性中都没有任何特殊的含义,可以表明我将描述的行为。
在数据库本身中,有几个产品行具有CategoryID=1
。有两个或三个有CategoryID=2
。然而,当通过Linq将数据加载到我的应用程序中时,通过context.Products
重复显示前三个具有CategoryID=1
,CategoryID=2
和CategoryID=3
,并且其余所有行都具有CategoryID=NULL
。这不是它在数据库中的显示方式。此数据库中没有其他异常情况。
帮助?
编辑:我已经在下面发布了一个答案,但也许DevExpress家伙可以参加?我很高兴它现在能够正常工作,但我不高兴我仍然不明白哪里出了问题。
生成的SQL看起来像什么? – 2012-03-27 05:20:48
@JonSkeet'SELECT [t0] .ProductID,[t0] .Description,[t0] .CategoryID FROM dbo.Product AS [t0]' - 没有什么不寻常的。 Debug Visualiser返回的集合具有所有正确的数据,但是当我遍历它(或将其设置为网格的DataSource)时,它突然变得不正确。 – 2012-03-27 05:48:24
这似乎不太可能会导致错误的数据......您如何诊断数据在您的应用程序中是错误的?你有没有试过一个小的控制台应用程序,只是获取数据并打印出来? (如果是这样,你可以发布该应用程序吗?) – 2012-03-27 05:50:25