使用实体框架自我跟踪实体,我可以执行显式加载吗?

时间:2010-08-16 20:14:00

标签: c# .net entity-framework entity-framework-4 self-tracking-entities

我希望返回“商业”实体的图表。 Buiness实体有一个“联系人”的集合。

所以我基本上想要这个:

ctx.Business.Include("Contacts").Where(b => b.BusinessID == id).Single();

问题是我不想要业务的所有联系人。只是那些有ContactTypeID = x的人。我怎么能做到这一点?我想我可能需要将查询分为两步。 1获得业务,第2个获取联系人,然后以某种方式将它们附加到业务。

但是我正在使用STE t4模板,我无法弄清楚如何使用它。

我非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

这样做的一种方法是:

var biz = from b in ctx.Business where b.BusinessID == id
select new 
{
   Business = b,
   Contacts = b.Contacts.Where(c => c.ContactTypeID == x)
}.ToList();

答案 1 :(得分:0)

我想我发现了怎么做:

var biz = ctx.Business.Where(b => b.BusinessID == id).Single(); 
var contacts = ctx.Contacts.Where(c => c.BusinessID==id && c.ContactTypeID==6);
foreach (var contact in contacts)
{
   biz.Contacts.Add(contact);
}

我很担心以这种方式添加联系人,他们将被视为“新”项目,但更改跟踪已关闭,因此它们被视为未更改。我认为更改跟踪只有在反序列化后才会启用。