【发布时间】:2015-01-23 21:01:35
【问题描述】:
我扩展了 IdentityDBContext 以重命名表名,但看起来我失去了用户和角色之间的多对多关系。 LINQ 不再选择正确的关系(p.s. 见智能截图):
namespace Carbon.Models {
public partial class CarbonEDM : IdentityDbContext<User, Role, string, IdentityUserLogin, IdentityUserRole, IdentityUserClaim>{
public CarbonEDM()
: base("name=CarbonDB") {
}
public DbSet<Message> Messages { get; set; }
public static CarbonEDM Create() {
return new CarbonEDM();
}
protected override void OnModelCreating(DbModelBuilder modelBuilder) {
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<User>().ToTable("Users", "dbo");
modelBuilder.Entity<Role>().ToTable("Roles", "dbo");
modelBuilder.Entity<IdentityUserRole>().ToTable("UserRoles", "dbo") ;
modelBuilder.Entity<IdentityUserClaim>().ToTable("UserClaims", "dbo");
modelBuilder.Entity<IdentityUserLogin>().ToTable("UserLogins", "dbo");
}
}
}
更新 1
正如答案所建议的,身份角色模型没有导航属性,所以我尝试了以下方法:
var users = from usr in db.Users
select new UserInfoViewModel{
email = usr.Email,
name = usr.Name,
role_name = db.Roles.Find(usr.Roles.FirstOrDefault().RoleId).Name
};
但我仍然遇到另一个错误:Method 'Carbon.Models.Role Find(System.Object[])' declared on type 'System.Data.Entity.IDbSet1[Carbon.Models.Role]' 无法使用类型为“System.Data.Entity.Core.Objects.ObjectQuery1[Carbon.Models.Role]”的实例调用
我只想获取所有用户及其角色的列表。
【问题讨论】:
-
UserInfoViewModel是什么样的?这就是users的通用 argumnet 的类型(您也可以将鼠标悬停在 VS 中的 var 上,让编译器提醒您该类型)。
标签: linq asp.net-identity asp.net-identity-2