2011-02-14 54 views
0

我有以下型號實體框架4.0,查找表POCO和導航性能

DeltaDirectionType, 
int Id 
string Name 


Delta, 
int Id 
string Name 
DeltaDirectionType DeltaDirectionType 
Double Value 

Trade 
int Id 
DateTime BusinessDate 
IList<Delta> deltas 

所以DeltaDirectionType是一個查找表,貿易持有三角洲

集合在它是作爲實現數據庫如下

DeltaDirectionTypes 
Id int 
Name varchar(max) 

Deltas 
Id int 
Name varchar(max) 
DeltaDirectionType_Id int 
Trade_Id int 
Value float 

Trades 
Id int 
BusinessDate DateTime 
Delta_Id int 

當我從代碼中生成模型的EDMX文件,(聯合國檢查外鍵)作爲我的模型不具備這些特性。我遇到了導航屬性的問題。在nHibernate中這樣的事情對於DeltaDirectionType和Delta來說是一個簡單的一對多的映射,而對Delta和Trades來說是多對多的映射。然而,我怎樣才能首先認識到DeltaDirectionType是一個查找,然後讓Icollection工作我。

我正在爲此付出努力,實體框架並沒有讓你輕鬆。我曾嘗試往常一樣,刪除EF放入你在一邊的導航屬性,但你得到了一些映射片段錯誤,性能沒有映射等

請在正確的方向幫助或點。

查找表是現實生活中的問題,不知道爲什麼就這樣難withing EF來實現。

任何幫助非常讚賞

感謝

+0

,三角洲應該有一個DeltaDirectionType屬性,DeltaDirectionType具有三角洲對象的集合。這是你所得到的嗎?我無法從你的描述中知道。 爲什麼取消選中外鍵屬性複選框?這些值可能有幫助... – 2011-02-14 23:12:07

回答

0

什麼,你實際上是由查詢是什麼意思?除了Delta實體將DeltaDirectionType_Name直接映射嗎?

在EF你會得到導航屬性DeltaDirectionType,你可以通過這個導航屬性訪問名稱。如果你不喜歡它,你可以將新屬性添加到分部類的生成POCO,並直接在三角洲實體提供的名稱,如:

public string DeltaDirectionTypeName 
{ 
    get 
    { 
    return DeltaDirectionType != null? DeltaDirectionType.Name : String.Empty; 
    } 
} 

唯一的問題是,你不能在LINQ的使用這個屬性到實體的查詢。在查詢中,你總是必須使用導航屬性。

1

您必須在模型中創建外鍵或導航屬性來導航關係。

導航屬性可以被定義爲單向的,即從增量表的查找表。單向導航這樣會相應的屬性添加到三角洲的對象而不是基於你說什麼looup表