实体框架6代码优先查找表未填充

史蒂文·爱迪生
public class Profile
{
    public int Id { get; set; }
    //...
    public virtual List<Room> Rooms { get; set; }
}

public class Room
{
    public int Id { get; set; }
    //...
    public virtual List<Profile> Members { get; set; }
}

public void AddUserToRoom(Profile user, Room room)
{
    room.Members.Add(user);
    user.Rooms.Add(room);
    _DBContext.SaveChanges();
}

在此处输入图片说明

上面的代码生成显示的架构,但是在SaveChanges()之后,表ProfileRooms不会填充ProfileRooms表。然后,如果随后查询,则列表为空白。有人发现我在做多对多映射时做错了什么?AddUserToRoom在管理器类中,该类保留数据库上下文的作用域,直到处置为止,因此在调用时上下文仍在作用域内。我还重写了Profile和Room的Equals()并对照ID进行相等性检查。

  • .NET 4.5
  • MVC 5项目
  • IDE VS 2013

我显然缺少了一些东西。提前谢谢!

-更新-很抱歉,没有流利的api调用,这可能是故障所在:

modelBuilder.Entity<Room>()
    .HasMany(e => e.Members)
    .WithMany(a => a.Rooms)
    .Map(mc =>
    {
        mc.ToTable("RoomMembers");
        mc.MapLeftKey("RoomId");
        mc.MapRightKey("MemberId");
    });

modelBuilder.Entity<Profile>()
    .HasMany(e => e.Rooms)
    .WithMany(a => a.Members)
    .Map(mc =>
    {
        mc.ToTable("RoomMembers");
        mc.MapLeftKey("MemberId");
        mc.MapRightKey("RoomId");
    });
史蒂文·爱迪生

解决方案

房间是从管理器中的其他dbcontext中检索到的。有一个静态函数可以检索房间,然后将其传递回去,并使用实例dbcontext来保存更改。自从写了静态方法以来,已经有一段时间了,我已经忘记了它。有趣的是没有错误,它只是经历了它而没有任何变化。当我使用传入的房间中的id从类实例上下文中检索它时,它就起作用了。

-互联网搜索者的其他信息-

virtual从集合中删除了关键字,还添加了一个类似的调用:

_DbContext.Entry(room).Collection("Members").Load();

在删除联接表中的项目之前。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

实体框架6代码优先触发器

来自分类Dev

实体框架6代码优先的newid()

来自分类Dev

实体框架6代码优先触发器

来自分类Dev

实体框架6代码优先中的自引用

来自分类Dev

实体框架6代码优先Fluent API表映射

来自分类Dev

访问/使用视图实体框架6代码优先方法

来自分类Dev

实体框架6代码优先-必需的Enum数据类型不起作用

来自分类Dev

实体框架6代码优先迁移-多个生产分支

来自分类Dev

实体框架6代码优先-具有用户UserRole权限的多对多

来自分类Dev

实体框架6代码优先自定义函数

来自分类Dev

实体框架6代码优先而不是创建所有列

来自分类Dev

实体框架6代码优先-必需的Enum数据类型不起作用

来自分类Dev

访问/使用视图实体框架6代码优先方法

来自分类Dev

实体框架6代码优先:特定模型设计的实现

来自分类Dev

实体框架6代码优先一对多可选关系消除子问题

来自分类Dev

实体框架5代码优先。如何指定我要删除的表?

来自分类Dev

实体框架5代码优先自引用关系

来自分类Dev

实体框架5代码优先自引用关系

来自分类Dev

在实体框架6代码优先方法中在两个表之间创建一对多和多对一映射

来自分类Dev

实体框架6代码优先-存储库实现是一个好方法吗?

来自分类Dev

实体框架6代码优先-存储库实现是一个好方法吗?

来自分类Dev

实体框架 6 代码优先关系/表创建问题

来自分类Dev

实体框架5代码优先而不创建数据库

来自分类Dev

实体框架6.0代码优先迁移到Azure SQL DB无效。

来自分类Dev

实体框架5代码优先/必需和可选外键关系为空

来自分类Dev

使用实体框架5代码优先迁移的SQL视图

来自分类Dev

实体框架6代码优先:具有10个子对象的基础对象的最佳实现是什么

来自分类Dev

实体框架6代码优先从数据库上下文在现有的VIEW上执行CREATE TABLE

来自分类Dev

如何以EF6代码优先的方式删除实体之间的关系?

Related 相关文章

  1. 1

    实体框架6代码优先触发器

  2. 2

    实体框架6代码优先的newid()

  3. 3

    实体框架6代码优先触发器

  4. 4

    实体框架6代码优先中的自引用

  5. 5

    实体框架6代码优先Fluent API表映射

  6. 6

    访问/使用视图实体框架6代码优先方法

  7. 7

    实体框架6代码优先-必需的Enum数据类型不起作用

  8. 8

    实体框架6代码优先迁移-多个生产分支

  9. 9

    实体框架6代码优先-具有用户UserRole权限的多对多

  10. 10

    实体框架6代码优先自定义函数

  11. 11

    实体框架6代码优先而不是创建所有列

  12. 12

    实体框架6代码优先-必需的Enum数据类型不起作用

  13. 13

    访问/使用视图实体框架6代码优先方法

  14. 14

    实体框架6代码优先:特定模型设计的实现

  15. 15

    实体框架6代码优先一对多可选关系消除子问题

  16. 16

    实体框架5代码优先。如何指定我要删除的表?

  17. 17

    实体框架5代码优先自引用关系

  18. 18

    实体框架5代码优先自引用关系

  19. 19

    在实体框架6代码优先方法中在两个表之间创建一对多和多对一映射

  20. 20

    实体框架6代码优先-存储库实现是一个好方法吗?

  21. 21

    实体框架6代码优先-存储库实现是一个好方法吗?

  22. 22

    实体框架 6 代码优先关系/表创建问题

  23. 23

    实体框架5代码优先而不创建数据库

  24. 24

    实体框架6.0代码优先迁移到Azure SQL DB无效。

  25. 25

    实体框架5代码优先/必需和可选外键关系为空

  26. 26

    使用实体框架5代码优先迁移的SQL视图

  27. 27

    实体框架6代码优先:具有10个子对象的基础对象的最佳实现是什么

  28. 28

    实体框架6代码优先从数据库上下文在现有的VIEW上执行CREATE TABLE

  29. 29

    如何以EF6代码优先的方式删除实体之间的关系?

热门标签

归档