0

私は定義のあるテーブルテイルを持っています

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用の1つの列とenum_TaleAuthorTypeId用の1つの列との良好な関係があります。

ここで、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は2つの列「UserProfile_UserId1」と「UserProfile_UserId」を追加したいのですが、値として1つ必要です。

私の問題は何ですか?

4

1 に答える 1

0

コンテキストに追加してみてください

 protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Ignore<UserProfile>();
    }
于 2013-01-10T21:58:13.233 に答える