[英]Error with DateTime mapping C#
我正在研究一個從SQLserver實例提取數據並在C#控制台應用程序中對其進行處理的程序。 我在正確映射dateTime值時遇到麻煩。 我正在使用企業庫5。這是我得到的錯誤
在要評估的IDataRecord上找不到列DOB。 這可能表明訪問器是用錯誤的映射創建的
這是參數映射器界面
public class MyParameterMapper : IParameterMapper
{
public void AssignParameters(DbCommand command, object[] parameterValues)
{
var parameter = command.CreateParameter();
parameter.ParameterName = "@dateOfBirth";
parameter.Value = parameterValues[0];
parameter.DbType = DbType.DateTime;
command.Parameters.Add(parameter);
}
}
在正在建模的類中,將具有映射的對象類型具有此聲明public DateTime? DateOfBirth {get; set;}
public DateTime? DateOfBirth {get; set;}
public DateTime? DateOfBirth {get; set;}
。 我實際實現該接口的類已將DoB設置為如下所示: var matches = _objectAdapter.GetList(person.DateOfBirth.Value).ToList();
傳遞查詢的實際方法如下:
public IEnumerable<Person> GetList(DateTime dateOfBirth)
{
const string sql = (@"SELECT FirstName, LastName
FROM Table
WHERE DOB = @dateOfBirth");
var accessor = new SqlStringAccessor<Person>(_db, sql, new MyParameterMapper(),_myRowMapper);
var people = accessor.Execute(dateOfBirth);
return people;
}
實際的映射如下:
private IRowMapper<Person> _myRowMapper = MapBuilder<Person>.MapAllProperties()
.Map(x => x.FirstName).ToColumn("FirstName")
.Map(x => x.LastName).ToColumn("LastName")
.Map(x => x.DateOfBirth).ToColumn("DOB")
.Build();
列名是正確的,因此我不確定此錯誤是否與接口有關,或者是否有必須通過DateOfBirth傳遞的顯式轉換?
嘗試將DOB添加到您的select子句中...
const string sql = (@"SELECT FirstName, LastName, DOB
FROM Table
WHERE DOB = @dateOfBirth");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.