繁体   English   中英

DateTime映射C#错误

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM