不是MVC的新手 - 在PHP上使用CodeIgniter但是.net MVC5和EF6的新手。
我正在尝试向我的项目添加一个新表,该表与Identity Management用户表(AspNetUsers)有0..n关系,该表由项目生成一个名为ApplicationUser的类:
namespace GMSB.Models
{
// You can add profile data for the user by adding more properties to your ApplicationUser class, please visit http://go.microsoft.com/fwlink/?LinkID=317594 to learn more.
public class ApplicationUser : IdentityUser
{
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
{
// Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
// Add custom user claims here
return userIdentity;
}
//public ICollection<MasterCode> MasterCodes { get; set; }
public ICollection<ZZZ> ZZZs { get; set; }
}
ZZZ是一个可选集合,在其自己的类
中定义namespace GMSB.Models
{
public class ZZZ
{
public int id { get; set;}
public string textField { get; set; }
public ApplicationIdentity User { get; set; }
}
}
当我在包管理器中运行update-database命令时,新表ZZZ是使用名为ApplicationIdentity_Id的FK字段创建的。我希望该字段被称为user_id或userId。如果我删除表并将ZZZ模型更改为
namespace GMSB.Models
{
public class ZZZ
{
public int id { get; set;}
public string textField { get; set; }
[ForeignKey("userId")]
public ApplicationIdentity User { get; set; }
}
}
再次运行update-database我收到一条错误消息: 类型为“GMSB.Models.ZZZ”的属性“User”上的ForeignKeyAttribute无效。在依赖类型“GMSB.Models.ZZZ”上找不到外键名称“userId”。 Name值应该是以逗号分隔的外键属性名称列表。
如果我将userId添加为字段:
namespace GMSB.Models
{
public class ZZZ
{
public int id { get; set;}
public string textField { get; set; }
public string userId { get; set; }
[ForeignKey("userId")]
public ApplicationIdentity User { get; set; }
}
}
和update-database我收到错误信息: GMSB.Models.ApplicationIdentity :: EntityType'ApplicationIdentity'没有定义键。定义此EntityType的键。 ApplicationIdentities:EntityType:EntitySet'ApplicationIdentities'基于类型'ApplicationIdentity',没有定义键。
我做错了什么?