如何从ef相关实体获取属性

时间:2018-05-27 14:28:50

标签: c# entity-framework

使用正常的sql语句,如下所示

$openingHours[$x] -> e.g. wednesday
$openingHours[$x][0] -> first Value of wednesday e.g. "8.30 am - 1.30 pm"
$openingHours[$x][1] -> second Value of wednesday e.g. "2.00 pm - 7.00 pm"

在我建立两个相关实体,如下面

select b.*, a.name from table_b b
left join table_a a on a.id = b.aid

我的dbcontext代码在这里

public class A {
[key]
public int id {get;set;}
public string name {get;set;}
....
}
public class B{
[key]
public int id {get;set;}
public string name {get;set;}
[ForeignKey("a")]
public in aid {get;set;}
[NotMapped]
public string A_name{get{return this.a.name;}}
public virtual A a {get;set;}
...
}

它适用于我,但看起来非常愚蠢,好像B类有许多相关的键 作为cid,did,eid等,一条记录会占用很多数据,所以在ef excepy sqlQuery还有其他任何简单的方法,比如noraml sql来获取 来自其他实体的额外财产? 最好的祝福!非常感谢

1 个答案:

答案 0 :(得分:0)

您可以编写linq查询:

var result= ( from a in mycontext.DBSetA_Name
              join b in mycontext.DBSetA_Name
              on a.id equals b.id
              into res
              from c in res.DefaultIfEmpty()
              select new {a,c}
             )
             .Select(x=> new
                         {
                           IdA= x.a.id,
                           NameA=x.a.name,
                           NameB=x.c==null?null:x.c.name
                         }).ToList();

结果将包含sql查询将给出的确切结果集。