2016-08-04 59 views
0

我有兩個表。實體框架 - 如何將代碼表中的列添加到當前實體

一個表格是codes_table 3列type,code_id,code_name

它擁有像行:

type code_id code_name 
--------------------------- 
Color 1  Red 
Color 2  Blue 
Color 3  Green 
Size  1  Small 
Size  2  Medium 
Price 1  Cheep 

第二個表(姑且稱之爲Products)含有一種叫COLOR_ID列。

我不認爲有可能從第二個表創建一個外鍵到第一個表。

現在,我想返回表格產品(即第二個表格)中的所有實體,並且每個實體都將根據COLOR_ID包含COLOR_NAME。 (即Im試圖從表1中檢索顏色名到表2中,取決於color_id)

我使用在VS2013上運行的EF6,它通過ODP 12.1.24連接到oracle 11G。

如何使用實體框架來做到這一點? 有沒有可以檢索合並數據的Linq查詢?

謝謝。

+0

請,自己嘗試一些東西。至少使用EntityFramework將您的代碼顯示在您獲得產品的地方。 –

+0

這段代碼返回產品: 使用(var context = new MyContext()) { var products = from p in context.Products select p; var res = products.ToArray(); } – Nir

+0

'Product'類中有'Color'導航屬性嗎? –

回答

0

,你可以使用嵌套在LINQ:

using (var ctx = new TestContext()) 
{ 
    var result = (from product in ctx.Products 
        from code in ctx.Codes.Where(c => product.colorId == c.code_id && c.type == "Color").DefaultIfEmpty() 
        select new {product, code}).ToList(); 
} 
+0

有趣,但我想讓我的產品實體豐富的顏色名稱。 有沒有辦法給Product EF表添加某種函數/ linq屬性? – Nir

+0

@Nir您可以使用dto類(例如ProductWithColorDto)並將查詢的結果注入到該類中。或者您可以在Product類中使用未映射的列,並在代碼中設置它的顏色。 – ArMaN

+0

謝謝ArMaN, 我可以使用您的建議將顏色名稱添加到我的產品中。然而,我希望框架將提供一種自動的方式來匹配結果(而不是我在列表上運行並更新color-name屬性)。 再次感謝。 – Nir

相關問題