我不确定如何搜索的基本 EF 问题:
将实体框架与生成的数据模型一起使用,我如何创建一个复合/自定义实体,该实体本质上将查找数据合并到主实体中,因此我可以在数据绑定中重用它(并且不必每次都进行查找即时)?
那么,在这个例子中,我可以有一个“SiteBU”实体,它有一个包含“BuinessUnit1”值的站点吗?
我知道我可以创建派生/继承的自定义“SiteBU”实体(见下图),但我不确定如何向其中添加“BusinessUnit1”值:
我也知道我可以使用自定义 LINQ 实体,但出于缓存目的,我希望拥有自己的“真实”实体而不是生成/匿名类型 - 例如
using (var context = new ReportingEntities())
{
result = new Collection<Site>(context.Sites
.Include("BusinessUnit") // Pointless because it's cast back to a Site?!
.Where(s => !s.IsDeleted)
.OrderBy(s => s.Site1).ThenBy(s => s.BusinessUnit.BusinessUnit1)
.ToList());
}
这是我可以看到的唯一手动(基于代码)构造复合实体的方式(这里我手动创建了一个从“Site”继承的“SiteBUEntity”,并且在构造函数中具有额外的 BusinessUnit 属性)。不过看起来很费力。
using (var context = new ReportingEntities())
{
var siteBU = from s in context.Sites.Include("BusinessUnit")
where !s.IsDeleted
orderby s.Site1, s.BusinessUnit.BusinessUnit1
select new { Site = s, s.BusinessUnit.BusinessUnit1 };
result = new Collection<SiteBUEntity>(siteBU.ToList().Select(s => new SiteBUEntity(s.Site, s.BusinessUnit1)).ToList());
}
(对不起,如果我的术语有误 - 请纠正我)。