【发布时间】:2014-03-10 10:04:46
【问题描述】:
我有一个使用 ASP.Net 标识的新 ASP.NET MVC 5.1 项目。 它看起来可靠且有希望,但今天我花了将近 9 个小时来做一件简单的事情,如果使用 SQL。
我的问题是,我无法通过 CodeFirst 创建一个表,外键引用默认 AspNetUsers 表。
例如: 我创建了一个名为 - Address
的表 public class Address
{
[Key]
public string UserId { get; set; }
public string MyAddress { get; set; }
}
但是如何创建对 AspNetUsers 的外键引用?
我尝试将上面的属性替换为
public IdentityUser MyAddress { get; set; }
// Or
public virtual IdentityUser MyAddress { get; set; }
// Or
public virtual ApplicationUser MyAddress { get; set; }
但它们都仍然显示错误:
One or more validation errors were detected during model generation:
MiaPos.Models.IdentityUserLogin: : EntityType 'IdentityUserLogin' has no key defined. Define the key for this EntityType.
MiaPos.Models.IdentityUserRole: : EntityType 'IdentityUserRole' has no key defined. Define the key for this EntityType.
IdentityUserLogins: EntityType: EntitySet 'IdentityUserLogins' is based on type 'IdentityUserLogin' that has no keys defined.
IdentityUserRoles: EntityType: EntitySet 'IdentityUserRoles' is based on type 'IdentityUserRole' that has no keys defined.
我也尝试从 post 覆盖 OnModelCreating
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<IdentityUserLogin>().HasKey<string>(l => l.UserId);
modelBuilder.Entity<IdentityRole>().HasKey<string>(r => r.Id);
modelBuilder.Entity<IdentityUserRole>().HasKey(r => new { r.RoleId, r.UserId });
}
但是当我运行 Add-Migration 时,它会创建 IdentityUserLogin、IdentityRole、IdentityUserRole 表并重复,只是前缀不同。 (AspNet身份)
最后我在 10 秒内通过 SQL 完成,但我只想知道为什么我不能在 CodeFirst 中完成? 以及为什么从 Microsoft 2014 新技术 做这样的事情这么难。
【问题讨论】:
-
谢谢你 Gábor Plesz,我会尽快检查。
-
嗨,Gábor Plesz,我只是检查样品。我找到了答案。所以我回答我的问题。
-
刚刚发布了一个类似问题的答案,如果有帮助的话:stackoverflow.com/questions/20104289/…
标签: entity-framework