【问题标题】:With entity framework's self tracking entities, can I perform an explicit load?使用实体框架的自我跟踪实体,我可以执行显式加载吗?
【发布时间】:2010-08-16 20:13:59
【问题描述】:

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

所以我基本上想要这个:

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

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

但我正在使用 STE t4 模板,我不知道如何使用它。

非常感谢任何帮助。

【问题讨论】:

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


    【解决方案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();
    

    【讨论】:

    • 我看到的问题是我需要返回单个业务 STE,而不是匿名类型。
    【解决方案2】:

    我想我找到了方法:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-24
      • 2011-08-22
      • 2011-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多