SimpleMembership中的EF CodeFirst和UserProfile

时间:2012-10-14 22:55:19

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

我有一个带定义的表Tale

public class Tale
{
    public int Id { get; set; }
    public string Title { get; set; }
    public string Text { get; set; }
    public DateTime ReleaseDate { get; set; }

    public int enum_TaleAuthorTypeId { get; set; }
    public virtual enum_TaleAuthorType enum_TaleAuthorType { get; set; }

    public int CommentableId { get; set; }
    public virtual Commentable Commentable { get; set; }
}

当我在控制台中输入'update-database'时,我与CommentableId的一列和enum_TaleAuthorTypeId的列有很好的关系。

现在,我想添加UserProfile并尝试输入类似:

的内容
    public int UserProfile_UserId { get; set; }
    public virtual UserProfile UserProfile { get; set; }

但是在添加迁移之后,我有了这个:

    public override void Up()
    {
        CreateTable(
            "dbo.UserProfile",
            c => new
                {
                    UserId = c.Int(nullable: false, identity: true),
                    UserName = c.String(),
                })
            .PrimaryKey(t => t.UserId);

        AddColumn("dbo.Tales", "UserProfile_UserId", c => c.Int(nullable: false));
        AddColumn("dbo.Tales", "UserProfile_UserId1", c => c.Int());
        AddForeignKey("dbo.Tales", "UserProfile_UserId1", "dbo.UserProfile", "UserId");
        CreateIndex("dbo.Tales", "UserProfile_UserId1");
    }

    public override void Down()
    {
        DropIndex("dbo.Tales", new[] { "UserProfile_UserId1" });
        DropForeignKey("dbo.Tales", "UserProfile_UserId1", "dbo.UserProfile");
        DropColumn("dbo.Tales", "UserProfile_UserId1");
        DropColumn("dbo.Tales", "UserProfile_UserId");
        DropTable("dbo.UserProfile");
    }

起初,看起来像EF想创建表UserProfile(但它已经创建,我不需要它)。然后,EF想要添加两列'UserProfile_UserId1'和'UserProfile_UserId',但我真的需要一个值。

我的问题是什么?

1 个答案:

答案 0 :(得分:0)

尝试在您的上下文中添加

 protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Ignore<UserProfile>();
    }