今日も同じ問題に直面しました。違いは、テーブルの作成にCode Firstに依存しておらず、手動で作成していることです。
ここ テーブルに「Discriminator」フィールドを手動で作成し、そのタイプをMEDIUMTEXTに変更しましたが、プロバイダーは、MEDIUMTEXTにVARCHARのようなMaxLengthがない場合でも、何らかの方法でMaxLengthプロパティを提供していると主張しました。 、これはプロバイダーのバグであるに違いないと思います。
これを回避するために、流暢なAPIを使用して、ディスクリミネーター列名(「ディスクリミネーター」として保持)とEFがディスクリミネーター列に期待する値を手動で通知しました。この場合は次のようになります。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Vehicle>()
.Map<Car>(m => m.Requires("Discriminator").HasValue("Car"))
.Map<Bike>(m => m.Requires("Discriminator").HasValue("Bike"));
}
識別列のタイプをVARCHAR(50)に変更しましたが、明らかな問題はありません。現在は正常に機能しています。私にとっての代替案は、手間がかかりすぎる別のORMに移行することです。次のバージョンのMySqlプロバイダーを待って、修正されているかどうかをテストします。その間、このソリューションに固執します。
>