C# 具有实体框架';s自跟踪实体,我可以执行显式加载吗?

C# 具有实体框架';s自跟踪实体,我可以执行显式加载吗?,c#,.net,entity-framework,entity-framework-4,self-tracking-entities,C#,.net,Entity Framework,Entity Framework 4,Self Tracking Entities,我希望返回“业务”实体的图形。Buiness实体有一个“联系人”集合 所以我基本上想要这个: ctx.Business.Include("Contacts").Where(b => b.BusinessID == id).Single(); 问题是,我不想要所有的业务联系人。只有那些具有ContactTypeID=x的。我怎样才能做到这一点?我想我可能需要将查询分为两个步骤。一个是获取业务,另一个是获取联系人,然后以某种方式将其附加到业务中 但我使用的是STE t4模板,我不知道如何使用

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

所以我基本上想要这个:

ctx.Business.Include("Contacts").Where(b => b.BusinessID == id).Single();
问题是,我不想要所有的业务联系人。只有那些具有ContactTypeID=x的。我怎样才能做到这一点?我想我可能需要将查询分为两个步骤。一个是获取业务,另一个是获取联系人,然后以某种方式将其附加到业务中

但我使用的是STE t4模板,我不知道如何使用它


我非常感谢您的帮助。

一种方法是:

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

一种方法是:

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

我想我找到了方法:

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);
}

我担心这样添加联系人会将其视为“新”项目,但更改跟踪已关闭,因此将其视为未更改。我认为更改跟踪只有在它们被反序列化后才会打开。

我想我找到了实现方法:

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);
}

我担心这样添加联系人会将其视为“新”项目,但更改跟踪已关闭,因此将其视为未更改。我认为更改跟踪只会在它们反序列化后打开。

我看到的问题是,我需要返回单个业务STE,而不是匿名类型。我看到的问题是,我需要返回单个业务STE,而不是匿名类型。