2009-08-07 28 views
3

我有一個數據庫具有多個具有相同名稱但來自不同架構的表格。例如:Linq2Sql:如何處理具有相同名稱和不同架構名稱的表格

[DatabaseName].[Schema1].[MyTable] 
[DatabaseName].[Schema2].[MyTable] 

當LINQ2SQL該數據庫生成代碼,它似乎僅僅是從所述第一模式拾取表和完全無視第二模式:

[Table(Name="[Schema1].MyTable")] 
public partial class MyTable { } 

這有效地使得不可能使用Linq2Sql查詢第二個模式上的表。有沒有解決方法?

我的第一個想法是手動編輯生成的代碼,使我有:

[Table(Name="[Schema1].MyTable")] 
public partial class Schema1MyTable { } 

[Table(Name="[Schema2].MyTable")] 
public partial class Schema2MyTable { } 

但不必每次都保持這種代碼數據庫的變化將是一個巨大的痛苦。任何其他想法?

回答

1

看起來這不再是在Visual Studio 2010的問題,我創建了兩個表,並重命名爲目標,並綁定一個模式一個,另一個綁定到架構b。我添加了DBML並將兩個目標表(一個顯示爲目標(a),另一個目標(b)在服務器資源管理器中)拖放到設計器上。這創建了一個類目標和另一個名爲目標1。生成的代碼(編輯爲清楚起見)顯示工具現在生成就像你上面的例子代碼類:

[global::System.Data.Linq.Mapping.TableAttribute(Name="a.target")] 
public partial class target 
{ //... class implementation snipped 
} 

[global::System.Data.Linq.Mapping.TableAttribute(Name="b.target")] 
public partial class target1 
{ // ... class implementation snipped 
} 
+0

是的,這是偉大的,它兩個,但問題產生單獨的類是類的名稱。你怎麼知道哪些模式目標點vs target1?我更喜歡將它們命名爲atarget和btarget或a_target和b_target。 – 2011-01-28 22:22:20

+0

@lfoust - 你可以隨時編輯設計師的名字。 – arcain 2011-01-28 23:34:21

+0

無論我是在設計人員還是在生成的代碼中編輯它,每當數據庫發生更改並且模型必須重新生成時,我仍然需要重新編輯它。 – 2011-02-11 20:50:03

相關問題