データベース用の小さなサービス ツールに取り組んでいます。私の問題は、最後の更新により、いくつかの smallint-columns を整数に変更する必要があったことです。
public class TEST
{
public int ID { get; set; }
//public Int16 ID { get; set; }
public string TEST { get; set; }
}
タイプを Int16 から int に変更しました。古いバージョンのデータベースではもう使用できないことを除いて、すべて正常に動作します。例外は、「System.Int32が期待され、Typ System.Int16が見つかりました」のようなものです。
すべての smallint と integer を int32 にキャストする方法はありますか?
何か案は?私の環境: EntityFramework 5.0.0 .NET 4.5 FirebirdClient 3.0.2.0
モデルビルダーでキャストを強制しようとしました:
modelBuilder.Entity<TEST>()
.Property(p => p.ID)
.HasColumnType("smallint");
例外:
エラー 2019: 指定されたメンバー マッピングが無効です。タイプ 'ContextRepository.TEST' のメンバー 'ID' のタイプ 'Edm.Int32[Nullable=False,DefaultValue=]' は、メンバーの 'FirebirdClient.smallint[Nullable=False,DefaultValue=,StoreGeneratedPattern=Identity]' と互換性がありませんタイプ「CodeFirstDatabaseSchema.BUNDLAND」の「SCHLUESSEL」
ID を Int16 にしてから、すべてを smallint (HasColumnType("int")) にキャストすると正常に動作しますが、31767(smallint max) より大きい数値で例外が発生します...