データベース用の小さなサービスツールで作業しています。私の問題は、最後の更新によって、smallint-columのいくつかを整数に変更しなければならないということです。エンティティフレームワークコードファースト - int32にsmallintとintegerをキャスト
public class TEST
{
public int ID { get; set; }
//public Int16 ID { get; set; }
public string TEST { get; set; }
}
タイプをInt16からintに変更しました。もう古いバージョンのデータベースでは使えないことを除いて、すべてうまく動作します。 Exceptionは、 "System.Int32が予想され、Typ System.Int16が見つかりました"のようなものです。
すべてのsmallintと整数をint32にキャストする方法はありますか?
アイデア?私の環境:EntityFramework 5.0.0 .NET 4.5 FirebirdClient 3.0.2.0
私はModelBuilderの中でキャストを強制しようとした:
modelBuilder.Entity<TEST>()
.Property(p => p.ID)
.HasColumnType("smallint");
例外:
エラー2019:指定されたメンバーのマッピングがあるが有効ではありません。 Typ 'ContextRepository.TEST'のメンバー 'ID'のタイプ 'Edm.Int32 [Nullable = False、DefaultValue =]'は、メンバーの 'FirebirdClient.smallint [Nullable = False、DefaultValue =、StoreGeneratedPattern = Identity]'と互換性がありません'CodeFirstDatabaseSchema.BUNDLAND'
くださいID Int16型タイプの 'SCHLUESSEL' と、その後(HasColumnType( "INT")をSMALLINT)するために、すべてのキャストが正常に動作しますが、31767(SMALLINT MAX)よりも大きい数字で私に例外を与えるだろう...
なぜこの列にINTEGERを使用するようにデータベースをアップグレードできませんか? –
私はメンテナンスプログラムを書いているだけで、メインアプリケーションの副作用について心配しています... – Dust258