实体框架中的关注者架构

2023-11-30

我正在制作一个具有以下功能的应用程序。但我被困在这个问题上。我就这样上来了。

public class User
{
  public int Id { get; set; }
  public ICollection<User> Followers { get; set; }
  public ICollection<User> Following { get; set; }
}

关注者表将是

public class Followers
{
public int UserId { get; set; }
public int FollowerId { get; set; }
}

但在这种方法中,实体框架如何知道哪些是关注者以及我正在关注哪些? 提前致谢。


看起来您想要首先使用代码建立多对多的自引用关系?你不需要Followers班级。只需定义User class:

public class User
{
  public int Id { get; set; }
  public ICollection<User> Followers { get; set; }
  public ICollection<User> Following { get; set; }
}

然后写下你的DbContext这样类:

public class MyEntities: DbContext
{
  public DbSet<User> Users { get; set; }

  protected override void OnModelCreating(DbModelBuilder modelBuilder)
  {
    modelBuilder.Entity<User>()
        .HasMany(x => x.Followers).WithMany(x => x.Following)
        .Map(x => x.ToTable("Followers")
            .MapLeftKey("UserId")
            .MapRightKey("FollowerId"));
  }
}

A Followers表将与数据库一起创建Users桌子。您可以使用以下代码进行测试:

using (var db = new MyEntities()) {
  var user1 = new User();
  var user2 = new User();
  var user3 = new User();
  user1.Followers = new User[] { user2 };
  user2.Followers = new User[] { user3 };
  db.Users.Add(user1);
  db.SaveChanges();
}

Update

实体框架如何知道哪些是关注者,哪些是关注者?答案是,它解释了modelBuilder这样声明:

  • Entity<User>: 题目是User;
  • HasMany(x => x.Followers):一个用户有很多关注者;
  • WithMany(x => x.Following):每个关注者有很多关注者;
  • Map(...): 链接表是Followers,左键指向主体(用户),右键指向主体的相关实体(关注者)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实体框架中的关注者架构 的相关文章

  • Signalr 在生产服务器中总是陷入长轮询

    当我在服务器中托管应用程序时 它会检查服务器端事件并始终回退到长轮询 服务器托管环境为Windows Server 2012 R1和IIS 7 5 无论如何 我们是否可以解决这个问题 https cloud githubuserconten
  • 如何在没有 Control.Invoke() 的情况下从后台线程修改控件属性

    最近 我们遇到了一些旧版 WinForms 应用程序 我们需要更新一些新功能 在专家测试该应用程序时 发现一些旧功能被破坏 无效的跨线程操作 现在 在您认为我是新手之前 我确实有一些 Windows 窗体应用程序的经验 我不是专家 但我认为
  • Cygwin 下使用 CMake 编译库

    我一直在尝试使用 CMake 来编译 TinyXML 作为一种迷你项目 尝试学习 CMake 作为补充 我试图将其编译成动态库并自行安装 以便它可以工作 到目前为止 我已经设法编译和安装它 但它编译成 dll 和 dll a 让它工作的唯一
  • 使用 Microsoft Graph API 订阅 Outlook 推送通知时出现 400 错误请求错误

    我正在尝试使用 Microsoft Graph API 创建订阅以通过推送通知获取 Outlook 电子邮件 mentions 我在用本文档 https learn microsoft com en us graph api subscri
  • C# 中值类型和引用类型有什么区别? [复制]

    这个问题在这里已经有答案了 我知道一些差异 值类型存储在堆栈上 而引用类型存储在托管堆上 值类型变量直接包含它们的值 而引用变量仅包含对托管堆上创建的对象位置的引用 我错过了任何其他区别吗 如果是的话 它们是什么 请阅读 堆栈是一个实现细节
  • C# 中可空类型是什么?

    当我们必须使用nullable输入 C net 任何人都可以举例说明 可空类型 何时使用可空类型 https web archive org web http broadcast oreilly com 2010 11 understand
  • 如何针对 Nancy 中的 Active Directory 进行身份验证?

    这是一篇过时的文章 但是http msdn microsoft com en us library ff650308 aspx paght000026 step3 http msdn microsoft com en us library
  • C# 用数组封送结构体

    假设我有一个类似于 public struct MyStruct public float a 我想用一些自定义数组大小实例化一个这样的结构 在本例中假设为 2 然后我将其封送到字节数组中 MyStruct s new MyStruct s
  • 按字典顺序对整数数组进行排序 C++

    我想按字典顺序对一个大整数数组 例如 100 万个元素 进行排序 Example input 100 21 22 99 1 927 sorted 1 100 21 22 927 99 我用最简单的方法做到了 将所有数字转换为字符串 非常昂贵
  • A* 之间的差异 pA = 新 A;和 A* pA = 新 A();

    在 C 中 以下两个动态对象创建之间的确切区别是什么 A pA new A A pA new A 我做了一些测试 但似乎在这两种情况下 都调用了默认构造函数 并且仅调用了它 我正在寻找性能方面的任何差异 Thanks If A是 POD 类
  • 用 C 实现 Unix shell:检查文件是否可执行

    我正在努力用 C 语言实现 Unix shell 目前正在处理相对路径的问题 特别是在输入命令时 现在 我每次都必须输入可执行文件的完整路径 而我宁愿简单地输入 ls 或 cat 我已经设法获取 PATH 环境变量 我的想法是在 字符处拆分
  • 将应用程序从 Microsoft Access 迁移到 VB 或 C#.NET

    我目前正试图说服管理层需要将我们的应用程序之一移植到 NET 该应用程序已经发展成为 Access 中的一个庞然大物 SQL 后端 拥有 700 个链接表 650 个表单 子表单 130 个模块和 850 个查询 我几乎知道这样做的所有主要
  • EPPlus Excel 更改单元格颜色

    我正在尝试将给定单元格的颜色设置为另一个单元格的颜色 该单元格已在模板中着色 但worksheet Cells row col Style Fill BackgroundColor似乎没有get财产 是否可以做到这一点 或者我是否必须在互联
  • 作为字符串的动态属性名称

    使用 DocumentDB 创建新文档时 我想设置属性名称动态地 目前我设置SomeProperty 像这样 await client CreateDocumentAsync dbs db colls x new SomeProperty
  • 如何构建印度尼西亚电话号码正则表达式

    这些是一些印度尼西亚的电话号码 08xxxxxxxxx 至少包含 11 个字符长度 08xxxxxxxxxxx 始终以 08 开头 我发现这个很有用 Regex regex new Regex 08 0 9 0 9 0 9 0 9 0 9
  • 窗体最大化时自动缩放子控件

    有没有办法在最大化屏幕或更改分辨率时使 Windows 窗体上的所有内容自动缩放 我发现手动缩放它是正确的 但是当切换分辨率时我每次都必须更改它 this AutoScaleDimensions new System Drawing Siz
  • 如何使用 ReactiveList 以便在添加新项目时更新 UI

    我正在创建一个带有列表的 Xamarin Forms 应用程序 itemSource 是一个reactiveList 但是 向列表添加新项目不会更新 UI 这样做的正确方法是什么 列表定义 listView new ListView var
  • 如何将字符串“07:35”(HH:MM) 转换为 TimeSpan

    我想知道是否有办法将 24 小时时间格式的字符串转换为 TimeSpan 现在我有一种 旧时尚风格 string stringTime 07 35 string values stringTime Split TimeSpan ts new
  • 如何连接字符串和常量字符?

    我需要将 hello world 放入c中 我怎样才能做到这一点 string a hello const char b world const char C string a hello const char b world a b co
  • 将 viewbag 从操作控制器传递到部分视图

    我有一个带有部分视图的 mvc 视图 控制器中有一个 ActionResult 方法 它将返回 PartialView 因此 我需要将 ViewBag 数据从 ActionResult 方法传递到 Partial View 这是我的控制器

随机推荐

  • GTSummary 中的行分组

    我正在尝试对一些行 变量 分类变量和连续变量 进行分组 以帮助提高大型数据集中的表可读性 这是虚拟数据集 library gtsummary library tidyverse library gt set seed 11012021 Cr
  • 如何使用特征对象来引用具有泛型方法的结构

    关于这个问题 将闭包存储在 HashMap 中 我了解到正确地将闭包传递给函数需要该函数是通用的 并且采用任何实现 Fn FnMut 或 FnOnce 特征的类型 在实现 C 库的一部分作为学习练习时 我需要某种类似这样的类型抽象 use
  • R 中的意外符号请参阅代码

    我试图编写一个函数来解析和合并一些数据 但是 R 抛出了意外的符号错误异常 我尝试了不同的方法来解决这个问题 仍然不起作用 请帮忙 see code aggall function df grp numcols sapply df clas
  • SqlDependency.OnChange 未在 WinForm 中触发?

    I used 使用 SqlDependency 检测更改作为我正在编写的代码的示例 我还查看了具有类似代码的其他链接 但它们都不起作用 本质上 我只是想改变label1 Text当表发生更改时 ErrorLog 因为某些原因 OnDepen
  • Node.js 到 MongoDB:按日期查找

    从 Node 到 MongoDB 查找日期出现问题 有人说 MongoDB 可能不是存储日期对象 而是存储字符串 但我不确定如何检查或如何修复它 在我的 Turnys js 文件中 exports findNeededTurnys func
  • 如何在 Python 中将条件语句与 for 循环结合起来?

    我有一个简单的例子 我认为在 Python 中可以用最少的努力将 if 语句和 for 循环结合起来 鉴于 sublists number1 number2 number3 for sublist in sublists if sublis
  • 从 NSString 获取 ivar 或属性

    我们能得到一个ivar or a property from a NSString就像我们可以得到一个class from a NSString与功能NSClassFromNSString 对于任何属性 您都可以使用 object valu
  • 手机号码验证安卓

    我想通过从用户的手机发送短信来将手机号码验证集成到我的 Android 应用程序中 那么除了向用户的手机发送短信之外 是否有任何 API 允许通过发送短信来验证手机号码 我建议cognalys for android 演示应用程序可在应用商
  • 使用scanf()输入字符的问题

    我正在尝试将一个字符输入到链接列表中 其中该字符可以是 A a G g T t C 或 c 我还不熟悉 C 我知道我在这里搞砸了一些事情 do printf nEnter a new nucleotide n scanf c newChar
  • BigQuery SQL 排除不在空结果中

    我遇到了不返回任何值的问题 数据库中有符合此条件的帐户 有点困惑为什么他们没有被退回 有什么建议么 select accountid from table1 where not in select accountid from table1
  • 如何构建 cURL 并在 Code::Blocks 项目中使用它(静态)

    我知道有很多关于此的主题 但它们都没有帮助我解决我的问题 我只想做一个简单的C 程序使用cURL with 静态库卷曲 没有 DLL 文件 上代码 块 Windows 8 我花了大约 20 个小时尝试这样做 但我发现的都是无用的东西和我不明
  • 位置:Windows Phone 7 中固定

    我正在尝试创建 PhoneGap Windows Phone 7 应用程序 为了模仿应始终在横向屏幕左侧可见的应用程序栏 我想放置一个 div CSS 为position fixed 然而 这不起作用 因为 WP7 上的 IE 似乎不支持它
  • 是否可以使用 MTOM 来响应 CXF RESTful Web 服务

    我在用着CXF 2 2 12我的 Web 服务的库 是否可以使用MTOM 消息传输优化机制 in RESTful回复 希望有任何与此相关的文档 教程的链接 谢谢 MTOM 是特定于 SOAP 的 因此我认为它与 RESTful 架构不兼容
  • 从张量的每个正面切片中提取对角线元素

    我有一个 p p n 张量 我想提取每个 p by p 切片的对角线元素 有谁知道如何在不循环的情况下做到这一点 谢谢 Behold永远强大 永远强大bsxfun for vectorizing MATLAB problems使用非常有效地
  • 如何在IOS sdk(Objective-c)中序列化一个类?

    如何在 Objective C 中序列化以下类 以便它可以与 SBJson 一起使用 当我使用此代码时 出现 动物不支持 JSON 序列化 错误 有人可以指出我哪里出错了吗 Animal h文件的内容如下 import
  • 如何通过publishAdd()通知获取添加的记录(不仅仅是id)?

    Each Sails js模型有方法publishAdd 当新记录添加到关联模型时 这会通知每个侦听器 此通知不包含新创建的记录 所以我必须从客户端发起另一个请求来获取新记录 Sails js 是否有可能发送带有通知的新记录 以便我可以减少
  • 在 java 中完成 FTP 后创建 0 kb 文件

    我正在尝试将文件通过 FTP 传输到远程计算机上 下面是我的代码 FTPClient ftpClient new FTPClient ftpClient connect home abc com ftpClient login remote
  • 如何在文本框中仅允许整数? [复制]

    这个问题在这里已经有答案了 在我的表单中 我希望仅允许在文本框中输入整数值 怎么做 您可以为此使用正则表达式验证器 下面是示例代码
  • 如何在 iOS 中发布 CGImageRef

    我正在编写这个方法来计算图像的平均 R G B 值 以下方法将 UIImage 作为输入并返回包含输入图像的 R G B 值的数组 但我有一个问题 如何 在哪里正确释放 CGImageRef NSArray getAverageRGBVal
  • 实体框架中的关注者架构

    我正在制作一个具有以下功能的应用程序 但我被困在这个问题上 我就这样上来了 public class User public int Id get set public ICollection