无法将记录插入连接/查找/链接表(EF / FluentAPI / MVC)

时间:2014-08-26 16:39:36

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

好吧,所以我此刻有点卡住了。我们使用EF,流畅的api等创建了一个MVC应用程序,而且我目前在将新记录添加到连接表时遇到了一些麻烦。

数据库表结构

用户
(PK)ID

passwordhash


DDRRole
(PK)ID
(FK)角色ID
(FK)DDRId

的UserRole
(PK,FK)用户ID
(PK,FK)DDRRoleId

角色
(PK)ID 名称

DDR
(PK)ID
名称

班级结构

表格的类是您期望拥有列的道具,例如用户有ICollection<DDRRole> DDRRole而DDRRole有ICollection<User> User

这里是流畅的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和其他东西做什么的事情,但是还没有让这个工作起作用。

提前感谢您的帮助

1 个答案:

答案 0 :(得分:0)

好吧所以我弄清楚发生了什么(有点)....所以在我的创建方法中,我将我刚刚创建的User对象传递给试图添加角色的方法和那个没有的东西彼此运作良好.....长话短说我传入了新用户的id,然后将db.find(userid)添加到一个新对象中,并在那里添加了角色......在savechanges上(插入工作。