2016-08-04 97 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

相关问题