2012-05-16 92 views
1

假设我必须实体名为SalesOrders的POCO实体和从名为SalesOrderLines的SQL数据库生成的常规实体。我想创建一个从SalesOrders到SalesOrderLines的关联,如下面的代码所示,但是我一直在代码下面看到异常。有谁知道这是否可能?是否可以将POCO实体与标准实体相关联?

[DataServiceKey("SalesOrderNumber")] 
public class SalesOrder 
{ 
    [Key] 
    public int SalesOrderNumber { get; set; } 
    public string StockCode { get; set; } 
    public string Description { get; set; } 

    [Include] 
    [Association("SalesOrder_SalesOrderLine", "SalesOrderNumber", "SalesOrderNumber")] 
    public IQueryable<SalesOrderLine> SalesOrderLines 
    { 
     get 
     { 
      SalesOrderLineEntities oSalesOrderLineEntities = new SalesOrderLineEntities(); 
      var soLines = from line in oSalesOrderLineEntities.SalesOrderLines 
         where line.OrderNumber == SalesOrderNumber.ToString() && 
          line.StockCode == StockCode 
         select line; 
      return soLines; 
     } 
     set 
     { 
     } 
    } 
} 

'的类型 'ServiceName.NameSpace.SalesOrder“属性' SalesOrderLines' 是不是有效的属性。不支持类型为基元或复合类型集合的属性。'

回答

1

事实证明,我需要做的就是将[Key]属性添加到生成的元数据类。

[MetadataTypeAttribute(typeof(SalesOrderLines.SalesOrderLinesMetadata))] 
public partial class SalesOrderLines 
{ 

    internal sealed class SalesOrderLinesMetadata 
    { 

     private SalesOrderLinesMetadata() 
     { 
     } 

     public DateTime DateStamp { get; set; } 

     public string OrderNumber { get; set; } 

     [Key] 
     public int SalesOrderLineID { get; set; } 

     public string SerialNumber { get; set; } 

     public string StockCode { get; set; } 
    } 
}