使用Code First更改Foriegn Key的字段名称

时间:2016-07-13 22:04:37

标签: asp.net-mvc entity-framework-6

不是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',没有定义键。

我做错了什么?

0 个答案:

没有答案