实体框架 - 创建自定义/复合实体?

时间:2013-10-15 06:39:19

标签: c# entity-framework-5

我不确定如何搜索的基本EF问题:

将Entity Framework与生成的数据模型一起使用,如何创建一个复合/自定义实体,它实际上将查找数据合并到主实体中,因此我可以在数据绑定中重用它(并且不必执行每次在飞行中查找?

因此,在这个例子中,我是否可以拥有一个“SiteBU”实体,其中包含一系列包含“BuinessUnit1”值的网站?

enter image description here

我知道我可以创建派生/继承的自定义“SiteBU”实体(参见下图),但我不确定如何向其添加“BusinessUnit1”值:

enter image description here

我也知道我可以使用自定义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());
        }

(对不起,如果我的术语有误 - 请纠正我)。

0 个答案:

没有答案