【问题标题】:ado.net entity data model parent child relationshipado.net实体数据模型父子关系
【发布时间】:2009-06-09 10:25:53
【问题描述】:

场景 我正在玩 MVC NerdDinner 项目并在“dbml”上使用 ado.net 实体数据模型

我有 2 个数据库表 Dinner 和 RSVP,其中 RSVP 包含 DinnerID 作为 Dinner 表中的外键。

现在,当我从晚餐表访问特定记录时,它返回一个具有 RSVP 属性的晚餐对象,但没有具有该属性的数据,尽管 RSVP 表具有来自晚餐表的外键数据

数据

餐桌

ID :1
标题:“.Net 架构”

RSVPTable

ID :1
晚餐编号:1
参加者姓名:'Miral'

ID :2
晚餐编号:1
参加者姓名:'Shivani'

因此,当获取应返回其子 RSVP 数据的晚餐数据时,我得到的 RSVP 属性为 0 条记录。

【问题讨论】:

    标签: entity-framework ado.net-entity-data-model


    【解决方案1】:

    EF 与 LINQ 略有不同。在您的查询中,添加类似

    var dinner = context.Dinners.First(d => d.DinnerID = id).Include("Attendees");
    

    这将告诉 EF 在一次提取中附加关联的参加者对象,为您执行所有必要的连接。

    【讨论】:

    • 抱歉,我找不到这个特定的方法或扩展方法'Include'
    • 在这里,它只与参加者姓名相关,如果我需要具有特定晚餐对象的整个对象。
    • 正确的语法 var Dinner =_nerdDinnerEntities.Dinner.Include("RSVP").Where(dd => dd.ID == ID).FirstOrDefault();您需要在 First 之前编写 Include,即“Include”是此处“Dinner”实体上的一种方法。它还包括子表名称,即“RSVP”和属性“AttendeeName”。我尝试只传递属性“AttendeeName”之一,但没有成功。
    【解决方案2】:

    正确的语法

    餐桌:“晚餐”和“回复”

    var Dinner =_nerdDinnerEntities.Dinner.Include("RSVP").Where(dd => dd.ID == ID).FirstOrDefault();

    您需要在 FirstOrDefault 之前编写 Include。

    'Include' 是这里 'Dinner' 实体上的一个方法,它包括包含外键的表名,即 'RSVP' 和属性 'AttendeeName'。

    我尝试传递属性“AttendeeName”之一,但没有成功。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-04
      • 1970-01-01
      • 2016-05-10
      • 1970-01-01
      • 2018-01-07
      相关资源
      最近更新 更多