我想諮詢一下我遇到的問題。我已經開始研究一個非常困難的數據庫項目:數據庫中的很多表沒有主鍵或有多個PK,所以我無法爲我的EDMX中的所有實體添加正確的關聯。但是,對於一些實體來說,這是可能的,我也設法做到這一點。因此,我有兩個實體之間存在關聯:Vulner和VulnerDescription。而且我有一個名爲VulnerObjectTie(帶有心理FK:VulnerObjectTie.Vulner = Vulner.Id)的Vulners「壞」連接表,我無法添加正確的關聯。所以,我決定做添加以下LinqtoEntities查詢:EF4:NavigationProperty和join:是一個錯誤還是一個特徵?
var vulerIdList = from vulner in _businessModel.DataModel.VulverSet.Include("Descriptions")
join objectVulnerTie in _businessModel.DataModel.ObjectVulnerTieSet on vulner.Id equals objectVulnerTie.Vulner
where softwareId.Contains(objectVulnerTie.SecurityObject)
select vulner;
這裏介紹的導航物業與VulnerDescription表的關聯。查詢工作,但它不加載描述屬性。但是,如果我刪除了連接運算符,則說明將正確加載。
此問題的最明顯的解決方案是將一個查詢分爲下面兩個查詢:
var vulerIdList = from vulner in _businessModel.DataModel.VulverSet
join objectVulnerTie in _businessModel.DataModel.ObjectVulnerTieSet on vulner.Id equals objectVulnerTie.Vulner
where softwareId.Contains(objectVulnerTie.SecurityObject)
select vulner.Id;
var query = from vulner in _businessModel.DataModel.VulverSet.Include("Descriptions")
where vulerIdList.Contains(vulner.Id)
select vulner;
但我認爲它看起來醜陋。任何人都可以爲這個問題提出一個更簡單的解決方案,或者它只是EF4的一個特殊功能?
thankyouplease :))