数据库中现有列的EF6外键

时间:2014-04-14 08:07:31

标签: sql entity-framework ef-code-first

我有一个数据库架构,&我首先使用EF6代码迁移。 我想将dbo.aspnetuser中的外键添加到我的数据库中的现有列(使用MSSQL) 可能吗?怎么做?

将迁移文件更改为此文件无效: 无法创建具有列'consumer_id'的表'dbo.AspNetUsers'上的外键,因为无法确定主键列。使用AddForeignKey fluent API完全指定外键。

CreateTable(
            "dbo.AspNetUsers",
            c => new
                {
                    Id = c.String(nullable: false, maxLength: 128),
                    UserName = c.String(),
                    PasswordHash = c.String(),
                    SecurityStamp = c.String(),
                    contact_firstname = c.String(),
                    contact_lastname = c.String(),
                    contact_phone = c.String(),
                    contact_phone2 = c.String(),
                    contact_email = c.String(),
                    country = c.String(),
                    state = c.String(),
                    city = c.String(),
                    street = c.String(),
                    postcode = c.String(),
                    longitude = c.Double(),
                    latitude = c.Double(),
                    consumer_id = c.Long(),
                    Discriminator = c.String(nullable: false, maxLength: 128),
                })
            .PrimaryKey(t => t.Id)
            .ForeignKey("dbo.fx_service_consumers", t => t.consumer_id, cascadeDelete: true);

2 个答案:

答案 0 :(得分:0)

您是否使用流畅的api将对象映射到表格?

我用它来映射Address in Person对象的外键:

this.HasRequired(t => t.PersonAddress ).WithRequiredDependent()
            .Map(m => m.MapKey("IdAddressColumnNameInUserTable"));

和我的对象

public class Person
{
     public int id {get;set;}
     public virtual Address PersonAddress {get;set;}
}

public class Address
{
    public int id {get;set;}
    public int city {get;set;}
    ...
}

答案 1 :(得分:0)

经过大量的阅读和辩论,似乎没有一个好的方法在表'dbo.AspNetUsers'上使用外键,我设法继续没有外键,它对我来说很好。