データベースの文字列をアプリケーションの整数にマップしようとするときに問題があります。コードの最初のストアのプロパティのプロパティ
私は車両のコレクションを持つデータベースを持っています。テーブルが作成されると、年の列がvarcharとして指定されました。私はそれを使って計算を実行するために値を整数として必要とします。
私はそれを変換するためにint.Parseを使うことができますが、私はそれをエンティティフレームワーククエリで動作させる必要があると知っています。 int.Parseはエンティティに対するlinqではサポートされていないため、このメソッドは無効です。
私が試した次のことは、ビューを作成し、その列をint型にキャストすることでした。これは完全に機能し、データベースに書き込む必要があるまで、ビューには派生フィールドが含まれているため、エラーがスローされます。
私が次に試みたのは、Pawel Kadluczkaの "EntityFramework.CodeFirstStoreFunctions"ライブラリでした。これは機能しますが、唯一の私はこのようにそれを直接指定する場合:
のparseIntが[CodeFirstDbFunction("ParseInt")]
public static int ParseInt(string number) {
throw new NotSupportedException("Direct calls are not supported.");
}
SQLでのparseInt関数は単に@ P1が渡されるcast(@p1 as int)
呼び出すとC#で定義されて
Store.Vehicles.Where(x => CustomSqlFunctions.ParseInt(x.ModelYear) == 2000)
文字列。
私の質問は
CustomSqlFunctions.ParseInt(ModelYear)
をVehicleクラスのプロパティから呼び出すことはできますか?
public int? Year {
get { return CustomSqlFunctions.ParseInt(ModelYear); }
set { ModelYear = value.ToString(); }
}
が、私は年がエンティティ
残念ながら、int.Parse(およびint.TryParse)は、Linq to Entitiesで使用されるSQL関数に変換できないため、これは私の状況では機能しません。 –