ADO.NET实体:从3个表中获取数据

时间:2008-12-10 03:12:52

标签: entity-framework ado.net

我有以下表结构:

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 

我想让Customer实体对象包含以下字段:

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

我遇到了PlantName字段(从Plant表中获取) 我将客户与党和党与工厂联系起来 但是,我不能将客户与工厂联系起来(因为它没有) 我无法将Plant表添加到映射中,当我这样做时 - 我收到以下错误:

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

删除植物协会的工作。 任何提示或方向非常赞赏。

3 个答案:

答案 0 :(得分:3)

您可以使用实体对象上的引用路径获取这些字段。

要获取PartyName,请使用以下语法:Customer.Party.PartyName

要获取PlantName,请使用以下语法:Customer.Party.Plant.PlantName

答案 1 :(得分:2)

您可以使用公共分部类扩展Customer实体:

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; }
  }
}

答案 2 :(得分:1)

经过一些研究,我在MSDN上遇到了这个thread,它说你可以创建一个只读实体,这不足以让它不单独使用,但它会变得更糟。您还将无法根据数据库的架构动态更新所有模型。