2011-11-29 93 views
0

實體框架中是否有一種方法可以讓我們知道兩個實體是否相關?用實體框架檢索相關實體

+0

你可以循環實體的屬性,並檢查他們反對用'is'功​​能。例如。 'if(property is relatedEntityType)'儘管我假設你是系統的架構師,所以應該知道哪些實體是相關的。你有沒有可能爲我們提供更多信息? – ThePower

+0

這個問題真的可以採取多種方式。想到的兩個是:(a)給定一個作者實體*對象*和一個圖書實體*對象*,我怎麼知道這是本書的作者之一,還是一個更復雜的問題。或者(b)給出一個實體*類型*和另一個實體*類型*,我如何判斷它們是否在同一個模型中?還是直接相關?類似的東西。我猜測下面的一種方式,其他人可能會猜測另一種方式。或者你的意思是別的嗎? –

+0

因爲對象實例化依賴於在XML文件上存在的對象實例(一個動態對象實例化) – unknownUser

回答

0

假設你的變量都被附加到相同的上下文中。您想知道您的bar1變量是否爲foo.bars集合中的某個欄值。你可以只是做:

theyAreEqual = foo.bars.Contains(bar1); 

如果實體變量不附加到上下文,那麼你可能有不同的變量在邏輯上指的是同一數據庫記錄,但實際上會指向不同對象。所以,你需要比較鍵值:

theyAreLogicallyEqual = foo.bars.Select(b => b.BarId).Contains(bar1.BarId); 

我假設你知道這一點,但對於其他人閱讀這個答案,the differences in value and reference type equality是這裏重要的。

+0

我剛剛評論過以前請看看 – unknownUser

0

您可以使用Linq to Entities。您可以匹配entity1中的每個對象,並檢查entity2中是否存在相應的數據/對象實體。

using (NorthwindEntities nw = new NorthwindEntities())  
{  
     var cusotmers = from c in nw.Customers  
         where c.City == "London"  
         select c;  
} 

你可以在這裏找到更多的信息: http://msdn.microsoft.com/en-us/library/cc161164.aspx

+0

這個應用程序是基於XML完全可定製的文件,所以我們可以擁有不同對象的嵌入式Web表單;在對象實例化之後,我們希望兩個人知道什麼是相關實體。 – unknownUser