sqlmetal如何生成关联名称?

时间:2012-06-25 19:57:02

标签: linq-to-sql sqlmetal

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
}

以前的类完全对称,但现在生成的类完全不对称。谁能解释一下呢?

1 个答案:

答案 0 :(得分:0)

由于似乎没有押韵或理由,我创建了一个包装sqlmetal并重写关联名称的命令行工具。它包含在我的开源Sasa实用程序框架中,名为sasametal