C# 具有实体框架';s自跟踪实体,我可以执行显式加载吗?
我希望返回“业务”实体的图形。Buiness实体有一个“联系人”集合 所以我基本上想要这个: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模板,我不知道如何使用
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,而不是匿名类型。