WCF Web サービス内で、ORACLE 11g データベースに対してクエリを実行し、エンティティ フレームワークをモデルとして使用します。ターゲット フィールドは Numeric 型ですが、エンティティ フレームワークでは Int64 です。
フィールドを更新しようとすると、次の例外が発生します:具体化された 'System.Decimal' 型から 'System.Int64' 型への指定されたキャストは無効です。 エラーを生成するメソッドを以下に示します。特に、else ステートメント内の行について: result = _context.ExecuteStoreQuery(query).FirstOrDefault();
public string GetDatabaseTimestamp(Type timestampFieldType, string query)
{
object result;
if (timestampFieldType == typeof(string))
{
result = _context.ExecuteStoreQuery<string>(query).FirstOrDefault();
}
else
{
result = _context.ExecuteStoreQuery<long>(query).FirstOrDefault();
}
return result.ToString();
}
EF レベルでコンバーターなどを定義することは可能でしょうか? データベースを変更するオプションは実行できないため、コードを編集する必要があります。