[英]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.