シンプルなCLR値型を使用して、SqlDataTypesで大量の太いデータオブジェクトをポコスに変換するマッピング操作を検証するテストを作成しています。SqlDataTypeをnunitのCLR nullable型と比較する
これは私がこれまでに構築されてきた方法です:intにたSqlInt32を比較するとき
private static void CompareValues(string k, Dictionary<string, string> propertyMap, TData sourceDal, TEntity entity)
{
string sourceField = k;
string destField = propertyMap[k];
object sourceval = sourceDal.GetType().GetProperty(sourceField).GetValue(sourceDal, null);
object destval = entity.GetType().GetProperty(destField).GetValue(entity, null);
Assert.AreEqual(sourceval,
destval,
String.Format("Values not equal on fields {0} ({1}) to {2} ({3})",
sourceDal.GetType().GetProperty(sourceField).Name, sourceDal.GetType().GetProperty(sourceField).PropertyType,
entity.GetType().GetProperty(destField).Name, entity.GetType().GetProperty(destField).PropertyType)
);
}
は残念ながら、?、この方法は、試験に失敗しました。 sourcevalの「値」は{74}
(通常の余分なSqlDataTypeプロパティを持つ複合型)と表示され、destvalの値は74
と表示されます。
私はこのメソッドを型認識にしたくありません。私のマッピングテストでは両方向のデータが渡されるため、片方がSQL型であると仮定しないでください。
私は私が間違っを吠えアムたSqlInt32
にpublic static int CompareTo(this SqlInt32 sqlInt32, int? value)
public static int CompareTo(this SqlInt32 sqlInt32, int value)
をのCompareToを拡張しようとしましたが、拡張メソッドが
(intelisenseは私のテストプロジェクトで適切にそれらを検出しても)と呼ばれていません木?正確な結果が得られるSqlDataTypesとCLR値の型を一般的に比較するにはどうすればよいですか?