【问题标题】:Unable to insert record into join/lookup/link table (EF/FluentAPI/MVC)无法将记录插入连接/查找/链接表 (EF/FluentAPI/MVC)
【发布时间】:2014-08-26 16:39:36
【问题描述】:

好的,所以我现在有点卡住了。我们已经使用 EF、fluent api 等创建了一个 MVC 应用程序,目前我在将新记录导入连接表时遇到了一些麻烦。

数据库表结构

用户
(pk)ID
用户名
密码哈希
等等
等等

DDR角色
(pk)ID
(fk)RoleId
(fk)DDRId

用户角色
(pk,fk)用户ID
(pk,fk)DDRRoleId

角色
(pk)ID 姓名

DDR
(pk)ID
姓名

类结构

表的类是您期望的具有列属性的类,例如用户有一个ICollection<DDRRole> DDRRole,DDRRole 有一个ICollection<User> User

这里是 fluent api 部分(不是全部,而是处理连接表的部分):

modelBuilder.Entity<User>()
            .HasMany(uc => uc.DDRRole)
            .WithMany(dd => dd.User)
            .Map(x =>
                {
                   x.MapLeftKey("UserID");
                   x.MapRightKey("DDRRoleID");
                   x.ToTable("UserRole");
                });

所以出了问题的是,当我们创建一个新用户时,这部分很好,但是当我们创建新用户时,我们想给该用户一个 DDRRole(它已经在数据库中),然后它将得到添加到 UserRole 表中。我已经搜索了很多关于如何使用流利的 api 和其他东西做的事情,但还没有让它工作。

提前感谢您的帮助

【问题讨论】:

    标签: c# sql asp.net-mvc entity-framework ef-fluent-api


    【解决方案1】:

    好的,所以我弄清楚了发生了什么(有点)......所以在我的 create 方法中,我将刚刚创建的 User 对象传递给试图添加角色的方法,而与之相关的东西是'彼此不能很好地工作......长话短说我传入了新用户的 ID,然后在一个新对象中做了一个 db.find(userid) 并在那里添加了角色......在 savechanges( ) 插入工作。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-10
    • 2016-06-17
    • 1970-01-01
    • 2011-06-27
    • 1970-01-01
    相关资源
    最近更新 更多