gpt4 book ai didi

linq-to-sql - SQLMetal 多个外键指向一张表问题

转载 作者:行者123 更新时间:2023-12-04 02:38:57 24 4
gpt4 key购买 nike

编辑 - 清理问题以更好地反射(reflect)实际问题:

我正在使用 SQLMetal 从我们的 SQL Server db 生成数据库类。最近,我需要添加一个有多个外键指向同一个表的表。使用 LINQPad 来处理新表,我能够访问两个外键的属性,如下所示:

  • record.FK_AId
  • record.FK_BId
  • record.FKA
  • 记录.FKB

  • ......这正是我所期望的。问题是,由 SQLMetal 生成的类产生这些属性:
  • record.FK_AId
  • record.FK_BId
  • record.FKA
  • record.FKBTableNameGoesHere

  • 现在我可以改变生成的类,所以 FKBTableNameGoesHere 将是 FK_B,但是生成的文件经常被不同的团队成员更改,所以这将是一个巨大的痛苦。有没有简单的解决方法?

    提前致谢。

    编辑 2
    所以,我认为解决方案是创建一个部分类,该类具有一个名为我想要的属性的属性,并让 getter/setter 指向命名不当的属性。这适用于选择,但不适用于 where 子句等。任何人都有解决方案??

    最佳答案

    所以,我的解决方案是添加另一个部分类并添加一个属性,其中 get/set 指向奇怪命名的 FKBTableNameGoesHere 属性。这样我们就不必不断修改生成的类。不能完全解决问题,但应该让开发人员更清楚该属性的含义。有人看到该解决方案有任何潜在问题吗?

    编辑 - 所以,显然这仅适用于选择数据而不是基于它进行过滤。不像我希望的那样容易修复。有人有其他建议吗?

    编辑 2 - Jeeze,认为这会是一个普遍的问题,但我想不是。无论如何,事实证明我在这方面走在正确的轨道上。我找到了这个帖子:

    Multiple foreign keys to the same table

    这给了我一个想法,我不能直接链接到另一个属性的 getter/setter,因为在幕后发生的事情可能远不止这些。这个家伙的解决方案并不完全是答案,但它让我朝着正确的方向前进。添加关联属性是最终做到的:

    public partial class ProblemClass
    {
    [Association(Name = "FK__SomeLinkHere", Storage = "_OriginalPoorlyNamedStorageVariable", ThisKey = "FK_1_Id", OtherKey = "Id", IsForeignKey = true)]
    public FKType MyNewBetterName
    {
    get
    {
    return this._OriginalPoorlyNamedStorageVariable.Entity;
    }

    set
    {
    this.OriginalPoorlyNamedStorageVariable = value;
    }
    }
    }

    将向任何仍然可以提出更清洁解决方案的人开放赏金。

    关于linq-to-sql - SQLMetal 多个外键指向一张表问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3736003/

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