gpt4 book ai didi

.net - 为什么 HasLoadedOrAssignedValue 属性设置为 true?

转载 作者:行者123 更新时间:2023-12-04 21:00:44 24 4
gpt4 key购买 nike

这是场景:

  • VS 2008 .NET
  • 3.5 SP1
  • LINQ 到 SQL

  • 我有一个 Product Entity,它有一个 ImageID 字段,所以它与 Image Entity 有关系。这都是在模式和 DBML 中定义的。
    现在,假设我创建了一个没有 ImageID 的新 Product 实体,并将其保存到数据库中。此时,实体的 _Image 字段已将 HasLoadedOrAssignedValue 设置为 false,这是应该的。
    现在,当我从数据库中检索该实体时,没有 ImageID,即 ImageID 设置为 null,并且附加到它的 Image Entity 也设置为 null,HasLoadedOrAssignedValue 设置为 true。为什么?
    现在,当我尝试将 ImageID 属性设置为有效的整数时,我得到一个 ForeignKeyReferenceAlreadyHasValueException异常(exception)。
    现在,我知道人们说,“哦,你必须设置关系属性本身,所以,Product.Image = someImage,而不是 Product.ImageID = 2”,但我总是设置 ID 字段,它总是有效..嗯,几乎总是这样。
    所以,我的问题是双重的:
  • 为什么 HasLoadedOrAssignedValue 不应该设置为 true?
  • 更重要的是,为什么我会遇到这种语无伦次的行为。我知道您并不总是必须直接设置实体属性,那么为什么这次不起作用?如果这是 LINQ to SQL 规则,那么为什么有时会破坏规则?
  • 最佳答案

    问题是正在查看 Image 属性并导致它加载 - 甚至可能是调试器。

    在 Product.Image 属性中设置断点并查看导致它的路径。

    关于.net - 为什么 HasLoadedOrAssignedValue 属性设置为 true?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1124023/

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