我从以下两个表中创建了一个纯连接表:
用户:
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int UserID { get; set; }
public string UserName { get; set; }
public String FirstName { get; set; }
public String LastName { get; set; }
public virtual ICollection<CrRole> Roles { get; set; }
角色:
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int RoleID { get; set; }
public String RoleName { get; set; }
public virtual ICollection<CrUser> Users { get; set; }
Fluent API 创建 UserRole 连接表:
modelBuilder.Entity<CrUser>()
.HasMany(c => c.Roles)
.WithMany(i => i.Users)
.Map(t => t.MapLeftKey("UserID")
.MapRightKey("RoleID")
.ToTable("CrUserRole"));
这可以正常工作,并使用 UserID 和 RoleID 列创建正确的 CrUserRole 表。
不过,我在尝试弄清楚如何对此连接表进行简单查询时遇到了很大的困难。在 SQL 中,命令将是:
SELECT COUNT(*)
FROM UserRole ur
WHERE ur.RoleID = @RoleID
AND ur.UserID = @UserID
我试过浏览角色或用户实体的导航链接,但似乎总是以一堆拒绝编译的意大利面条代码结束:-(
如果有人能指出我正确的方向,我将不胜感激。甚至一些教程也会有所帮助,我发现的那些似乎只是创建连接表而不包括 CRUD 操作。
谢谢!