Linq to sql sqlmetal如何生成关联名称?

Linq to sql sqlmetal如何生成关联名称?,linq-to-sql,sqlmetal,Linq To Sql,Sqlmetal,sqlmetal生成的关联名称一直是许多挫折的根源。有时,关联只是以“Id”结尾的列名,有时它基于外键约束名生成关联名 我根本不知道它使用什么步骤来生成这些名称,而最近的模式更改又一次彻底地改变了关联名称,所以我想对此进行处理 我有两张表,它们在某种程度上相互参照。大概是这样的: class In { int Id; EntityRef<Out> Yields; // YieldsId => FK_Out_Source EntitySet<Out>

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
}
中的类
{
int-Id;
EntityRef产生;//YieldsId=>FK\u Out\u源
_Source中的EntitySet;//_Source中的FK_
}
分类
{
int-Id;
EntityRef产生;//YieldsId=>FK\u在\u源中
EntitySet Out\u Source;//FK\u Out\u 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
}
中的类
{
int-Id;
EntityRef产生;//YieldsId=>FK\u Out\u源
EntitySet;//FK\u在\u源中
}
分类
{
int-Id;
EntityRef In;//YieldsId=>FK_In_Source
EntitySet Out\u Source;//FK\u Out\u Source
}

以前的类应该是完全对称的,但是现在生成的类是完全不对称的。有人能解释一下吗?

因为这似乎没有什么道理,我创建了一个命令行工具来包装sqlmetal并重写关联名称。它包含在我的开源Sasa实用程序框架中,名为