我在尝试创建商家时遇到这些错误.
FlavorPing.Models.IdentityUserLogin: : EntityType 'IdentityUserLogin' has no key defined. Define the key for this EntityType. FlavorPing.Models.IdentityUserRole: : EntityType 'IdentityUserRole' has no key defined. Define the key for this EntityType. UserLogins: EntityType: EntitySet 'UserLogins' is based on type 'IdentityUserLogin' that has no keys defined. UserRoles: EntityType: EntitySet 'UserRoles' is based on type 'IdentityUserRole' that has no keys defined."
这是我的商家模型:
namespace FlavorPing.Models { public class Merchant { //Meant to inherit identity. //[ForeignKey("ApplicationUserId")] public string ApplicationUserId { get; set; } [ForeignKey("ApplicationUser")] public virtual ListApplicationUser { get; set; } [Key] public int MerchantID { get; set; } [Required] [Display(Name = "Business Name")] public string MerchantName { get; set; } [Required] [Display(Name = "Email")] [DataType(DataType.EmailAddress)] public string email { get; set; } //need to create formatting here. [Required] [Display(Name = "Web Site Link")] public string website { get; set; } //public int MenuItemID { get; set; } public virtual List
这是商家的创建控制器,这是我收到错误的地方:
// POST: Merchants/Create // To protect from overposting attacks, please enable the specific properties you want to bind to, for // more details see http://go.microsoft.com/fwlink/?LinkId=317598. [HttpPost] [ValidateAntiForgeryToken] public ActionResult Create([Bind(Include = "MerchantID,MerchantName,email,website")] Merchant merchant) { if (ModelState.IsValid) { merchant.ApplicationUserId = User.Identity.GetUserId(); db.Merchants.Add(merchant); db.SaveChanges(); return RedirectToAction("Index"); } return View(merchant); }
这是我的DBContext:
namespace FlavorPing.Models { public class FlavorPingContext : IdentityDbContext { public FlavorPingContext() : base("name=FlavorPingContext") { } public System.Data.Entity.DbSetMerchants { get; set; } public System.Data.Entity.DbSet MenuItems { get; set; } public System.Data.Entity.DbSet MerchantDetails { get; set; } public System.Data.Entity.DbSet Followers { get; set; } public System.Data.Entity.DbSet FollowerMenuItemMerchants { get; set; } public DbSet UserLogins { get; set; } public DbSet UserClaims { get; set; } public DbSet UserRoles { get; set; } protected override void OnModelCreating(DbModelBuilder builder) { // Primary keys builder.Entity ().HasKey(q => q.FollowerID); builder.Entity
我试图在这个链接中遵循示例(option2): EntityType'IdentityUserLogin'没有定义键.定义此EntityType的键
我正在尝试选项2,因为我想避免使用两个DB.但我是管理数据库的新手,所以如果你认为我应该做选项3,请告知为什么,或者如果你知道为什么我会收到这个错误,请告诉我原因.提前致谢!
好的我通过将其添加到我的DBContext类中来修复我的问题.
builder.Entity().HasKey (l => l.UserId); builder.Entity ().HasKey (r => r.Id); builder.Entity ().HasKey(r => new { r.RoleId, r.UserId });