를 사용하여 데이터 주석지도 내 열이 나는이처럼 보이는 클래스가되지 않습니다)에서 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과 동일한 문제가 발생했습니다). 이 작업은 모두 코드를 사용하여 수행되며 매핑 파일은이 용도로 사용되지 않습니다.
3 년 후이 대답이 나를 도왔습니다. 변경할 수없는 데이터 모델이 있지만 이름 지정 규칙과 일치하지 않는 열 이름이 있습니다. 쿼리를 deserialize하는 데 사용하는 POCO에서 데이터베이스의 각 열에 대해 전용 필드를 만들고 올바르게 명명 된 속성을 사용하는 공용 필드를 만들어 비공개 필드의 값을 반환하는 getter 메서드 만 노출합니다. 이것은 다른 3 년 후에 누군가를 도울 수 있습니다. – Ben
다른 14 개월 후 그것은 나를 도왔습니다 :) –