sqlmetal生成的关联名称一直是令人沮丧的根源。有时关联只是列名,末尾去掉了"Id",有时它基于外键约束名称生成关联名称。
我根本无法弄清楚它使用什么步骤来生成这些名称,最近的架构更改再次极大地改变了关联名称,因此我想对此进行处理。
我有两个表,它们在一种链中相互引用。像这样:
class In
{
int Id;
EntityRef<Out> Yields; // YieldsId => FK_Out_Source
EntitySet<Out> In_Source; // FK_In_Source
}
class Out
{
int Id;
EntityRef<In> Yields; // YieldsId => FK_In_Source
EntitySet<In> Out_Source; // FK_Out_Source
}
这些是架构更改之前的类,其中 In 和 Out 表之间有一个额外的 FK 字段。删除该字段后,sqlmetal 现在生成以下内容:
class In
{
int Id;
EntityRef<Out> Yields; // YieldsId => FK_Out_Source
EntitySet<Out> Out; // FK_In_Source
}
class Out
{
int Id;
EntityRef<In> In; // YieldsId => FK_In_Source
EntitySet<In> Out_Source; // FK_Out_Source
}
以前的类应该是完全对称的,但现在生成的类是完全不对称的。谁能解释一下?
由于这似乎没有押韵或理由,我创建了一个命令行工具来包装 sqlmetal 并重写关联名称。它包含在我的开源 Sasa 实用程序框架中,称为 sasametal。