簡體   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