VS 2008 .NET 3.5 SP1,LINQ to SQL。
我有一个Product Entity,它有一个ImageID字段,因此它与Image Entity有关系。这都是在架构和DBML中定义的。
现在,假设我创建了一个没有ImageID的新Product实体,并将其保存到数据库中。此时,Entity的_Image字段将HasLoadedOrAssignedValue设置为false,就像它应该的那样。
现在,当我从DB中检索该实体而没有ImageID时,即ImageID设置为null,并且附加到它的Image Entity也设置为null,HasLoadedOrAssignedValue设置为true ....为什么??
现在,当我尝试将ImageID属性设置为有效的int时,我得到一个ForeignKeyReferenceAlreadyHasValueException异常。
现在,我知道有人说,“哦,你必须设置关系属性本身,所以,Product.Image = someImage,而不是Product.ImageID = 2”,但我总是设置ID字段,它总是工作....好吧,几乎总是
所以,我的问题有两个:
喝彩!
答案 0 :(得分:2)
问题在于是在查看Image属性并导致它加载 - 甚至可能是调试器。
在Product.Image属性中设置断点,并查看导致它的路径。
答案 1 :(得分:1)
所以,我今天遇到了同样的问题而且我不知道这是否会对任何人有所帮助,但事实证明,在我的LINQ Entity DBML文件中,我有一段关系,比如用户ID在评论和用户之间。这段关系被命名为User1。当我加载表单时,我使用该关系在状态栏中设置一些信息。不幸的是,我还在表单的其他地方的下拉列表中有用户列表。因此,当我尝试更改下拉列表时,它知道数据已在使用中。一旦我为表单状态栏执行了单独的linq查询,一切正常。我知道这是预期的行为,但这非常令人沮丧。