我有兩個不同的dbml圖表反映了我的Linq-To-SQL類。 (這是必要的,因爲它們出現在不同的項目中。)一個圖中的一個對象需要與另一個圖中的對象關聯。如何關聯不同dbml圖中的Linq-to-Sql對象?
我該怎麼做?
我有兩個不同的dbml圖表反映了我的Linq-To-SQL類。 (這是必要的,因爲它們出現在不同的項目中。)一個圖中的一個對象需要與另一個圖中的對象關聯。如何關聯不同dbml圖中的Linq-to-Sql對象?
我該怎麼做?
事實證明,我發現完成這個最簡單的方法是強制關係。我創建了自己的部分類來匹配包含FK的類,並且只是模擬了我爲其他關係找到的生成的代碼。
這隻有一個缺憾AFAI可以告訴:有一個在實際的外鍵字段的set
屬性的生成代碼塊,如果你嘗試,應該拋出一個異常,並設置值時,已經在地方的一個值:
if (this._Parent.HasLoadedOrAssignedValue)
{
throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
}
但是我準備沒有這種生活,只要我知道我不應該明確地設置FK字段。
實際上你的兩個圖表會產生兩個不同的數據上下文。我也猜測你在圖上使用SqlMetal來生成實體。
您將需要在一個圖表中包含所有關聯的對象,否則datacontext將無法從數據庫中爲您檢索該關係。
另一種選擇是使用自定義實體和XML映射文件。
我自己也對這個問題感到擔憂,這就是爲什麼在我的情況下,我把所有的實體放在一個上下文中。上下文對於設計者來說過於龐大和複雜(現在需要大約20分鐘才能加載,可能有超過100個實體),所以我們使用SQLMetal(DBML編譯器/生成器的命令行形式)來構建它。 DBML本身由用於設計我們的模式的工具維護(生成)。這不完全是你的問題的答案,而是解決這個問題的一種方法。
Ya生成代碼的工具,但我沒有此選項,因爲第二個圖在不同的項目中。 –
是的,2個不同的數據上下文,但一個是可見的另一個。不知道SqlMetal是什麼;我只是從服務器瀏覽器中拖放表格。 –
Sqlmetal是從您的dbml文件 –