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

前端之家收集整理的这篇文章主要介绍了linq-to-sql – 指向一个表问题的SQLMetal多个外键前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
编辑 – 清理问题以更好地反映实际问题:

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

> record.FK_AId
> record.FK_BId
> record.FKA
> record.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;
        }
    }
}

为那些仍然可以提出更清洁解决方案的人打开奖金.

原文链接:https://www.f2er.com/mssql/83185.html

猜你在找的MsSQL相关文章