我有一个参考表,其中包含性别、地址类型、联系人类型等各种受控值查找数据。许多表都有指向该参考表的多个外键
我还有多对多关联表,其中同一个表有两个外键。不幸的是,当这些表被拉入 Linq 模型并生成 DBML 时,SQLMetal 不会查看外键列的名称或约束的名称,而只会查看目标表。所以我最终得到了名为 Reference1、Reference2 的成员,...不太便于维护。例子:
<Association Name="tb_reference_tb_account" Member="tb_reference" <======
ThisKey="shipping_preference_type_id" OtherKey="id" Type="tb_reference"
IsForeignKey="true" />
<Association Name="tb_reference_tb_account1" Member="tb_reference1" <======
ThisKey="status_type_id" OtherKey="id" Type="tb_reference"
IsForeignKey="true" />
当然,我可以进入 DBML 并手动更改成员名称,但这意味着我无法再往返我的数据库模式。在该模型的现阶段,这不是一个选项,该模型仍在不断发展。
将参考表拆分为 n 个单独的表也是不可取的。
我可能可以编写一个脚本,在每次生成后针对 XML 运行,并将成员名称替换为从 ThisKey 派生的名称(因为我遵守这些类型的键的命名约定)。
有没有人找到更好的解决方案来解决这个问题?
所以我走上了部分课程的路线。例如,我添加了以下成员来解决原始示例中的第一个引用成员:
public partial class tb_account
{
public tb_reference shipping_preference_reference
{
get
{
return this._tb_reference.Entity;
}
set
{
this.tb_reference = value;
}
}
这远非完美。在大型模型中它需要大量的额外代码,并且依赖于属性的顺序不改变(如果引用表的另一个外键被添加到帐户表中,则该成员实际上可能指向除运输偏好)。
这也有一个好处。由于我已经为其他目的编写了部分类,因此添加这些成员不需要我重新构建应用程序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)