实体框架代码优先:与同一个表的一对多和多对多关系

2024-03-24

我的项目中有一个用户模型和一个事件模型。事件有创建者(用户)和参与者(用户),因此事件与用户具有一对多关系,并且与同一个表也具有多对多关系。

我首先有这样的一对多关系:

Public class Event
{
      ...
      public int CreatedById { get; set; }
      public virtual User CreatedBy { get; set; }
      ...
}

然后,当我添加多对多关系时,迁移不会生成多对多关系:

Public class User
{
      ...
      public virtual ICollection<Event> Events { get; set; }
      ...
}

Public class Event
{
      ...
      public int CreatedById { get; set; }
      public virtual User CreatedBy { get; set; }
      public virtual ICollection<User> Users { get; set; }
      ...
}

如果我删除一对多关系,那么迁移将成功生成多对多关系。

有没有办法只用数据注释来做到这一点?


EF不知道在哪里User.Events必须映射到。它可能是Event.CreatedBy或者它可能是Event.Users。两者都会产生一个有效的模型。您必须通过应用以下命令给 EF 一点提示:[InverseProperty]属性:

public class User
{
    ...
    [InverseProperty("Users")]
    public virtual ICollection<Event> Events { get; set; }
    ...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实体框架代码优先:与同一个表的一对多和多对多关系 的相关文章

随机推荐

  • Angular - routerLink 和状态问题

    我想使用 routerLink 和状态从 html 页面路由到另一个页面 使用标签没有问题 在登陆页面的 ngOnInit 期间 我可以按预期检索状态 使用标签主页也可以导航 但状态结果未定义 我有什么错吗 登录页面的html
  • 无法加载此类文件--2.2/gherkin_lexer_en,如何修复?

    我需要一点帮助 我该如何解决这个问题 当我打电话时cucumber我收到以下错误 WARNING You must use ANSICON 1 31 or higher https github com adoxa ansic on to
  • 目前仅在 PRIMARY KEY 的聚集列上支持排序依据

    卡桑德拉2 0 7 cql 3 1 1 CREATE TABLE playlists id uuid song order int song id uuid title text album text artist text PRIMARY
  • 如何为 has_many_polymorphs 和错误设置这些 CRUD 控制器操作

    我正在使用有很多多态性 https github com fauna has many polymorphs插件 以便可以将视频 主题和用户发布到个人资料中 因此 一个个人资料有很多 showable objects 可以是视频 主题和用户
  • 使用 microsoft graph c# asp.net 将新文件上传到 onedrive

    尝试将尚不存在的文件上传到 onedrive 我已经设法让它更新现有文件 但似乎无法弄清楚如何创建一个全新的文件 我已经使用以下方法完成了此操作Microsoft Graph图书馆 以下是用于更新现有文件的代码 public async T
  • 清除 Thread.interrupt() 标志的方法

    我最近继承了一个大型Java应用程序 其中几乎没有线程安全性 我目前正在研究的是让所有线程正确处理被中断的情况 而不是使用非常糟糕的线程Thread stop 部分问题是我不知道清除中断标志的每个方法调用 目前我知道以下内容将清除中断标志
  • C - 棘手的开关盒工作..!

    Folks 最近开始学习C 卡在一个点上 它是关于 switch case 语句的工作 这是代码 include
  • Android 使用令牌会话登录:类似于用户登录并保持会话状态直到注销

    登录 Android 应用程序后 如何在 php api 中创建令牌会话 像这样 我想确保当用户登录时 无论发生什么情况 崩溃 关闭 断电 重新启动 离开应用程序 它都会保持会话状态 同时用户信息数据将与中的所有活动一起发送将应用程序连接到
  • Xcode 6 Storyboard 无法居中

    我在尝试将对象置于故事板中心时遇到问题 我创建了一个新的 单视图应用程序 项目 输入了 main Storyboard 我试图在其中心添加一个标签 在 4 英寸 iPhone 的此故事板预览中 即使我强制故事板使用 3 5 4 或 4 7
  • 以原子方式从 Redis 数据结构中弹出多个值?

    是否有一个 Redis 数据结构 允许弹出 获取 删除 其中包含的多个元素的原子操作 有众所周知的 SPOP 或 RPOP 但它们总是返回单个值 因此 当我需要 set list 中的前 N 个值时 我需要调用该命令 N 次 这是昂贵的 假
  • 为什么从今天开始,meteor 在 _id 字段周围添加了 ObjectId?

    也许我完全错了 但是自从我今天开始的项目以来 当我使用meteor mongo直接连接到mongodb并插入一条记录 使用mycol insert 时 id字段被ObjectId 12345555 包围 从代码添加记录时 情况并非如此 因此
  • Android Studio - 应用程序未安装到手机上,但运行

    我使用 Android Studio 在手机上运行我的应用程序 它运行良好 但应用程序本身从未安装过 菜单中没有它的图标 每当我想测试我的应用程序时 我都必须 运行 我没有看到任何错误 我相信我的清单有问题 我在这里做错了什么
  • ARC、桥接演员和 GHUnit

    我正在关注来自的教程http gabriel github com gh unit docs appledoc include guide testing html http gabriel github com gh unit docs
  • 在特定时间删除Mongoose、Nodejs用户

    我有一个问题 如何在特定时间删除mongoose和nodejs用户 实际上 我希望用户在删除后 60 天内从数据库中删除 我如何实现这一目标 我添加了Momentjs之类的东西 之后应该怎么做 该代码应在用户进行删除操作 60 天后删除 s
  • Wrapper 找不到 servlet 类 Eclipse 停止为 Tomcat 生成类文件

    我做了以下事情 运行方式 gt 在服务器上运行 它工作正常 直到出现 JavaScript 错误 不知道为什么并挂起屏幕 所以我使用任务管理器杀死了 Eclipse 重复任务 1 不再生成运行 servlet 所需的类文件 但出现以下异常
  • 以简单的方式获取整数单位数字

    我不确定我的英语 但我需要获取整数的个位数 没有复杂的算法 但有一些 API 或其他技巧 例如 int a 53 int b 76 我添加这一点是因为我几乎总是不 符合质量标准 来发布 这让我发疯 请修复它 我花了 10 次拍摄才发布这个问
  • 无法调整尺寸指令

    我想知道为什么有些汇编指令可以推断 但其他的则不能 例如 在以下程序中我有 globl main main push rbp mov rsp rbp mov 8 8 rbp mov 8 rbp rax pop rbp ret 我收到以下错误
  • 如何在 scipy.optimize. Differential_evolution 中启用并行?

    我试图使用 scipy optimize 中的 Differential evolution 找到函数的全局最小值 正如 scipy 参考指南中所述 我应该在选项中设置 更新 延迟 workers 核心数 但是 当我运行代码时 它冻结并且不
  • 更改 TabPageIndicator 页脚和文本颜色 (ViewPagerIndicator)

    这让我发疯 我一生都无法弄清楚如何更改 TabPageIndicator 来自 Jake Wharton 的 ViewPagerIndicator 的页脚和文本颜色 我查看了示例 ViewPagerIndicator 应用程序的源代码 但找
  • 实体框架代码优先:与同一个表的一对多和多对多关系

    我的项目中有一个用户模型和一个事件模型 事件有创建者 用户 和参与者 用户 因此事件与用户具有一对多关系 并且与同一个表也具有多对多关系 我首先有这样的一对多关系 Public class Event public int CreatedB