2016-05-15 34 views
0

這裏是我的數據模型的相關部分:查找實體框架中的相關項在2跳

data model

我有一個通用的數據輸入屏幕,知道這是什麼實體,並建立網格編輯該表的數據。一切都很順利,直到我到了諾言。我去編寫它來加載一個下拉服務,然後意識到我沒有足夠的信息來加載列表。

generic data entry screen

下面是Promise代碼:

namespace biz 
{ 
    public class Promise: EFObject<Promise> 
    { 
    public int Sequence { get; set; } 

    public decimal Hours { get; set; } 

    [ForeignKey("Service")] 
    public int Service_Id { get; set; } 

    public Service Service { get; set; } 

    public Constraint[] Constraints; 
    //public Dollars Allocation { get; set; } 
    } 

} 

由於人誰設計的系統,我知道我必須只加載屬於誰擁有誰擁有包成員的服務承諾。但作爲一個通用的數據輸入屏幕,我怎麼知道這一點?我不能硬編碼任何東西。

有沒有一種方法可以註釋承諾,以指示可以從中選擇服務的服務列表?某種約束(SERVICE_ID必須是從(從服務地方的承諾Member_Id =?

任何事情都是公平的遊戲的通用數據輸入屏幕,並且只要它是符合邏輯的,一貫的,我可以將同樣的規則,選擇標識任何輸入屏幕在實體目錄中的任何地方。

+0

所以,你在'承諾'維護屏幕上作爲'會員'?我想你正在尋找一種動態構建查詢的方法,例如使用謂詞構建器。 –

+0

@GertArnold,先生,您好,我添加了更多背景的屏幕截圖。我希望有一種聲明方式或一種方法來添加另一個外鍵,以便EF知道只在當前成員的封裝的承諾上下文中獲取當前成員的服務(當考慮可供選擇的選項時) 。我發現目前我的數據模型沒有強制執行此操作。也許這是第一個要解決的問題。謝謝! – toddmo

+0

最後,EF執行SQL。在EF中無法完成的SQL(跳過連接)無法完成。你需要像'Where Promise.Package.Member_Id = memberId'這樣的東西。 –

回答