我正在使用EF Code First(Core),并有一个角色表,如下所示:
Id PK
Object1Id FK
Object2Id FK
RoleId FK NOT NULL
UserId FK
UserGroupId FK
根据此角色所关联的对象类型,必须填充Object1Id或Object2Id。
我尝试在StorageContext中添加以下内容:
modelBuilder.Entity<MyTable>().HasAlternateKey(c => new { c.RoleId, c.Object1Id, c.UserId });
modelBuilder.Entity<MyTable>().HasAlternateKey(c => new { c.RoleId, c.Object2Id, c.UserId });
modelBuilder.Entity<MyTable>().HasAlternateKey(c => new { c.RoleId, c.Object1Id, c.UserGroupId });
modelBuilder.Entity<MyTable>().HasAlternateKey(c => new { c.RoleId, c.Object2Id, c.UserGroupId });
有EF解决方案吗?
有什么想法吗?
解决方案
modelBuilder.Entity<MyTable>().HasIndex(c => new { c.RoleId, c.Object1Id, c.UserId }).IsUnique();
modelBuilder.Entity<MyTable>().HasIndex(c => new { c.RoleId, c.Object2Id, c.UserId }).IsUnique();
modelBuilder.Entity<MyTable>().HasIndex(c => new { c.RoleId, c.Object1Id, c.UserGroupId }).IsUnique();
modelBuilder.Entity<MyTable>().HasIndex(c => new { c.RoleId, c.Object2Id, c.UserGroupId }).IsUnique();
我希望这不会“扼杀”演出。