私は次のようなクラスを持っています:
public class Analyst
{
[Column("Internal_ID")]
public int ID { get; set; } // if this is named like the column, it works
[Column("DisplayName")]
public string Name { get; set; }
}
このオブジェクトはそのように埋められています(この次の部分はDbContextから継承するクラスにあります):
public List<T> ExecProc<T>(string proc, Dictionary<string, object> params)
{
var parms = new List<SqlParameter>();
var sql = new StringBuilder();
sql.Append(sproc.StoredProcedure);
sql.Append(" "); // a space, that's all it is
foreach (var key in sproc.Parameters.Keys)
{
sql.Append(string.Format("{0},", key));
parms.Add(new SqlParameter(key, sproc.Parameters[key]));
}
if (sql[sql.Length - 1] == ',') // removing the trailing ,
{
sql.Remove(sql.Length - 1, 1);
}
return Database.SqlQuery<T>(sql.ToString(), parms.ToArray()).ToList();
}
返されるリストには正しい量の行(この場合はオブジェクト)が含まれていますが、どのプロパティにも値が入力されていません。procが200行を返す場合、リストに200個のオブジェクトが含まれていますが、値が入力されているオブジェクトはありません。
フィールド名と[Column( "name")]属性の値の間に不一致がないことを確認しました。結果セットのフィールド名と一致するようにプロパティ名を変更すると、正常に機能しますが、データ注釈を使用してそれらをマッピングしようとすると、機能しないようです。誰かが私がここで欠けているものを指摘できますか?簡単なことだと思います。
使用方法:Visual Studio 2010 Ultimate SP1、.Net 4 SP1、EF 4.2.0(EF 4.3でも同じ問題が発生しました)。これはすべてコードのみを使用して行われ、マッピングファイルは使用されません。