2008-12-10 66 views
3

我有以下表結構中獲取數據:ADO.NET實體:從3個表

Table: Plant 
PlantID: Primary Key 
PlantName: String 

Table: Party 
PartyID: Primary Key 
PartyName: String 
PlantID: link to Plant table 

Table: Customer 
PartyID: Primary Key, link to Party 
CustomerCode: String 

我想有客戶實體對象具有以下字段:

PartyID: Primary Key 
CustomerCode: String 
PartyName: String 
PlantName: String 

我有麻煩與植物名字段(這是從植物錶帶來的 我連接客戶黨和黨與工廠與協會 但我不能連接客戶與工廠與關聯(因爲它沒有一個) 我不能添加Pla nt表映射,當我這樣做 - 我得到以下錯誤:

Error 3024: Problem in Mapping Fragment starting at line 352: Must specify mapping for all key properties (CustomerSet.PartyID) of the EntitySet CustomerSet 

刪除植物協會的作品。 任何提示或方向非常讚賞。

+0

你有沒有找到解決這個問題嗎?我遇到同樣的事情。 – ern 2009-04-06 21:30:26

+0

你的模式中有外鍵嗎? – RobS 2009-04-06 22:55:10

回答

3

您可以通過使用實體對象上的參考路徑來獲取這些字段。

要獲得PartyName,使用此語法:Customer.Party.PartyName

要獲得PlantName,使用此語法:Customer.Party.Plant.PlantName

1

經過一番研究,我碰到這個thread在MSDN上,說你可以創建一個讀 - 僅僅是實體,這足以造成不能單獨使用它的缺點,但它變得更糟。您還將失去根據數據庫模式動態更新模型全部的能力。

2

您可以通過使用公共的部分類擴展客戶實體:

public partial class Customer 
{ 
    public string PartyName 
    { 
    get { return Party.PartyName; } 
    set { Party.PartyName = value; } 
    } 

    public string PlantName 
    { 
    get { return Party.Plant.PlantName; } 
    set { Party.Plant.PlantName = value; } 
    } 
}