我不确定如何搜索的基本EF问题:
将Entity Framework与生成的数据模型一起使用,如何创建一个复合/自定义实体,它实际上将查找数据合并到主实体中,因此我可以在数据绑定中重用它(并且不必执行每次在飞行中查找?
因此,在这个例子中,我是否可以拥有一个“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());
}
这是我可以看到构建复合实体的唯一手动(基于代码)方式(这里我手动创建了一个“SiteBUEntity”,它继承自“Site”并在构造函数中具有额外的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());
}
(对不起,如果我的术语有误 - 请纠正我)。