0

よろしく、

移行とバイナリ フィールドに問題があります...

私の最初の移行は次のようになります (既存のデータベースがありました)。

public override void Up()
{
    CreateTable("dbo.Words", c => new
    {
        ID = c.Int(nullable: false, identity: true),
        Name = c.String(maxLength: 4000),
        Image = c.Binary(),
        Audio = c.Binary(),
    }).PrimaryKey(t => t.ID);
}

Entity クラスは次のとおりです。

public class Word
{
    public int ID { get; set; }
    public string Name { get; set; }
    [MaxLength]
    public byte[] Image { get; set; }
    [MaxLength]
    public byte[] Audio { get; set; }
}

自動移行をオンにしています。データベースからすべてのテーブルを削除して「Update-Database」を実行すると、次のようになります。

Applying code-based migration: 201304211813502_InitialMigration.
Applying automatic migration: 201304212024538_AutomaticMigration.
System.Data.SqlServerCe.SqlCeException (0x80004005): Cannot alter column of type NTEXT or IMAGE [ Column Name = Image ]

そのため、何かが同期していないようです..「Add-Migration AutoMigration」を実行して、エンティティフレームワークがまだ更新されている必要があることを確認します...取得したファイルは次のとおりです。

public partial class AutoMigration: DbMigration
{
    public override void Up()
    {
        AlterColumn("dbo.Words", "Image", c => c.Binary());
        AlterColumn("dbo.Words", "Audio", c => c.Binary());
    }

    public override void Down()
    {
        AlterColumn("dbo.Words", "Audio", c => c.Binary(maxLength: 4000));
        AlterColumn("dbo.Words", "Image", c => c.Binary(maxLength: 4000));
    }
}

だから...これから、EFはImageとAudioフィールドがBinary(maxLength:4000)であると考えているように見えます..しかし、そうではないはずです!! (最初の移行ではBinary()であるため)。

そのため、私は立ち往生していて、移行を最新の状態に保つことができません...そしてMaxLength(無制限)のバイナリフィールドが必要です...

ここで何が起こっているのでしょうか?ありがとう!デビッド

4

1 に答える 1

0

最終的に、プロジェクトを EF 6.0.0 Alpha3 にアップグレードすることができました。多くの小さな問題を修正し、NuGet を 2.5 RC にアップグレードする必要がありました。今は動作します..私が何をしたかはわかりませんが、おそらくEF 6へのアップグレードでした

于 2013-04-24T17:24:41.713 に答える