2012-06-25 58 views
0

關聯名稱sqlmetal生成一直是很多挫折的來源。有時候,關聯只是帶有「Id」的列名稱,有時它會根據外鍵約束名稱生成關聯名稱。sqlmetal如何生成關聯名稱?

我簡直無法弄清楚它用來生成這些名稱的步驟,最近的模式更改已經徹底改變了關聯名稱,所以我想要處理這個問題。

我有兩個表,它們在一種鏈中相互引用。類似這樣的:

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 
} 

以前的班是完全對稱的,因爲他們是應該的,但現在生成的類是完全不對稱的。任何人都可以解釋嗎?

回答

0

由於似乎沒有韻或原因,我創建了一個命令行工具,它包裝sqlmetal並重寫關聯名稱。它包含在我的開源Sasa實用程序框架中,名爲sasametal