如何使用存储库模式和实体框架连接多个表?

2023-11-26

我需要使用存储库模式和实体框架(使用 C#)连接多个表。这可能吗?如果是这样,请让我知道如何做同样的事情。


在 EF 中,连接表是通过使用导航属性完成的。基本上,EF 会为您做到这一点。在您的存储库中实现时,无论它是否是通用的,您都可以调用Include构建查询表达式时告诉 EF 为您填充导航属性的方法。

假设我们有这些 POCO 类:

public class Dog
{
    public int DogId { get; set; }
    public string Name { get; set; }

    public int OwnerId { get; set;}
    public Owner Owner { get; set; } // the navigation property
}

public class Owner
{
    public int OwnerId { get; set; }
    public string Name { get; set; }

    // another navigation property
    // all the dogs that are related or owned by this specific owner
    public ICollection<Dog> DogList { get; set; } 
    public ICollection<Cat> CatList { get; set; }
}

下面是使用 Include 的示例代码片段:

public virtual IEnumerable<Dog> Retrieve()
{
    var _query = context.Dog.Include(a => a.Owner);
    ...
    ...// rest of your code
}

对于多个表,您可以嵌套 include 方法,如下所示:

public virtual IEnumerable<Owner> Retrieve()
{
    // you can nest as many as you want if there are more nav properties
    var _query = context.Owner
        .Include(a => a.DogList)
        .Include(a => a.CatList); 
    ...
    ...// rest of your code
}

一旦包含导航属性,那么基本上就是连接其他表。只需查看查询生成的 SQL 即可。希望这可以帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用存储库模式和实体框架连接多个表? 的相关文章

随机推荐

  • JSON web-api 上公开的对象 - 如何阻止属性名称更改大小写?

    我有一个如下所示的对象模型 public class Product public string ProductCode get set public string ProductInfo get set 我通过 Dapper 填充它 并将
  • 在硬件加速下缩放画布时,偏移路径模糊

    我的应用程序使用可缩放的画布 以便我可以以米而不是像素为单位指定路径点 当我缩放画布时 然后使用画一条线path lineTo 打开硬件加速后 线条变得模糊且偏移 关闭硬件加速或使用硬件加速时不会发生这种情况canvas drawLine
  • 的类型扩展错误' aria-label='Dictionary<'K, 'V> 的类型扩展错误'> Dictionary<'K, 'V> 的类型扩展错误

    以下类型扩展 module Dict open System Collections Generic type Dictionary lt K V gt with member this Difference that Dictionary
  • 如何以编程方式将内容添加到菜单条?

    我想将文本框中写入的任何内容添加到菜单条中 在我的文件 gt 最近搜索中 我怎样才能以编程方式进行 我是否可以动态分配一个事件处理程序 以便当用户单击该子文件夹中的 X 项目时 文本将复制回文本框 编辑 我如何以编程方式调用文件夹 Busq
  • 无法编译QT创建快速应用程序项目

    我是 QT Creator 的新手 我已经安装了 QT Creator 5 6 2 和 MinGW 4 9 2 32 位 我在编译快速应用程序项目时遇到问题 因为它总是显示此错误消息 Could not create directory C
  • Big O 正式定义中的常量

    我正在修改 Big O 和其他相关界限的正式定义 但有些事情让我绊倒了 在我正在读的书中 Skiena Big O 被定义为 f n O g n 当存在常数 c 时 对于 n gt n0 的某个值 f n 始终 这对我来说通常是有意义的 我
  • UITextField 自定义背景视图和移动文本

    我正在尝试使用自定义文本字段背景 问题是文本看起来离 左侧太近 我没有看到任何方法可以在不子类化 UITextField 的情况下移动文本 所以我试图扩展和覆盖 void drawTextInRect CGRect rect NSLog d
  • 在客户端 JavaScript 中访问 Express.js 局部变量

    很好奇我是否做得对 如果不对 你们会如何处理这个问题 我有一个 Jade 模板 需要渲染从 MongoDB 数据库检索的一些数据 并且我还需要访问客户端 JavaScript 文件中的数据 我正在使用 Express js 并将数据发送到
  • Swift:在 IOS13+ 上设置 StatusBar 颜色(使用 statusBarManager)

    我想通过代码定义状态栏的颜色 我发现它是这样的 但它已被弃用 有谁知道这样做的新方法是什么 这个警告在我的所有代码中都跟着我 此代码有效 但有警告 任何想要的人的代码 class AppDelegate UIResponder UIAppl
  • 从另一个类调用方法

    我想知道如何从另一个类调用方法 而不必创建该类的新实例 我查过这个 我看到的 90 的示例都要求我为我引用的类制作一个新副本 像这样的东西 Fooclass test new Fooclass test CallMethod 但是 我想知道
  • 如何在xgboost中获得每棵树的预测?

    使用xgboost Booster predict只能得到所有树的预测结果或者每棵树的预测叶子 但是我怎样才能得到每棵树的预测值呢 截至最近 xgboost引入了切片 API Raul 的答案虽然有效 但过于复杂 要获得单独的预测 您所需要
  • 将 JavaScript 数组的键和值获取到变量中

    我有一个 JavaScript 对象数组 写的时候console log myarry 它将以下面的形式显示在控制台中 Array 2 0 Object one one 1 Object two two length 2 在这个数组中 我的
  • Objective-c:将日期字符串转换为星期几+月份名称

    初学者的问题 但我想知道是否有人可以帮助我解决这个问题 我需要根据包含特定日期的字符串设置四个字符串 例如 Apr 7 2011 表示星期几的字符串 缩写 Mon Tue Wed Thu Fri Sat Sun 例如 Thu 需要一天的字符
  • 如何确定一个对象是否可以 ToString 转换为值或类型名称?

    我正在编写 php 服务和我们的 crm 之间的互操作 我需要做的一件事是确保简单类型被转换为 ToString 以便稍后在 json 转换器中使用 我什至不确定 简单类型 的名称是什么 但它可以这样定义 代表低级变量类型的对象 包含单个值
  • Promise 和通用 .catch() 语句

    我正在为我的系统编写一个 API 它将 XHR 发送到服务器并返回一个应由调用者处理的承诺 到目前为止一切顺利 对于每个 API 调用 我必须使用 then and catch调用 但通常 大约 75 的时间 catch引用相同的功能 只需
  • CRC16 校验和:HCS08 与 Kermit 与 XMODEM

    我正在尝试将 CRC16 错误检测添加到 Motorola HCS08 微控制器应用程序 但我的校验和不匹配 一在线CRC计算器提供了我在 PC 程序中看到的结果和我在微型计算机上看到的结果 它将微处理器的结果称为 XModem 将 PC
  • SQL Server 为 xml 路径添加属性和值

    我想创建一个包含属性和值的 xml 节点 Example
  • 我如何编写Applescript来每小时弹出警报[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我想知道如何每小时在我的计算机 Mac OS X 上弹出一个警报 我认为用 Applescript 写这个会非常简单 但我没有 Applescript 经验 谢谢 AppleSc
  • 为什么“显示:表格单元格”在“位置:绝对”时被破坏

    我遇到了一个奇怪的问题 我使用DIV作为容器 并将图像放入该DIV中 我希望该图像与底部垂直对齐 以下代码有效 banner width 700px height 90px top 60px left 178px overflow hidd
  • 如何使用存储库模式和实体框架连接多个表?

    我需要使用存储库模式和实体框架 使用 C 连接多个表 这可能吗 如果是这样 请让我知道如何做同样的事情 在 EF 中 连接表是通过使用导航属性完成的 基本上 EF 会为您做到这一点 在您的存储库中实现时 无论它是否是通用的 您都可以调用In