问题流利Nhibernate将MySQL时间(6)映射到C#DateTime

时间:2013-09-09 20:26:31

标签: c# mysql nhibernate fluent-nhibernate fluent-nhibernate-mapping

我有一个带有以下架构的MySql表

Field   Type            Null    Key Default Extra
id          int(11)         NO  PRI NULL    auto_increment
Date    date            YES MUL NULL    
Time    time(6)         NO  MUL NULL    
Exch    varchar(45) YES MUL NULL    
ProdType    varchar(45) YES     NULL    
Product varchar(45) YES     NULL    
Contract    varchar(45) YES     NULL    
Direction   varchar(45) YES     NULL    
Price   decimal(10,4)   YES     NULL    
Quantity    int(11)         YES     NULL    

流利模式:

public class Trade
{
    public virtual int Id { get; set; }
    public virtual DateTime Date { get; set; }
    public virtual DateTime Time { get; set; }
    public virtual string Contract { get; set; }
    public virtual string Direction { get; set; }
    public virtual double Price { get; set; }
    public virtual int Quantity { get; set; }
}

和映射:

public TradeMap()
    {
        Id(x => x.Id).Column("id");
        Map(x => x.Date).Column("Date");
        Map(x => x.Time).Column("Time").CustomType("timestamp");;
        Map(x => x.Contract).Column("Contract");
        Map(x => x.Direction).Column("Direction");
        Map(x => x.Price).Column("Price");
        Map(x => x.Quantity).Column("Quantity");
        Table("ts");
    }

我使用以下代码测试ORM

        DateTime dayStart = Convert.ToDateTime("11:31:00.000000");
        DateTime dayEnd = Convert.ToDateTime("11:32:00.000000");

        IQueryable<Trade> result = from ts in repo.GetList<Trade>()
                     where ts.Date == new DateTime(2013,7,1)
                        && ts.Time >= dayStart
                        && ts.Time <= dayEnd
                        && ts.Contract == "Sep13"
                    select ts;


        foreach (var l in result)
        {
            DateTime k = l.Time;
        }

Trade result = repo.GetList<Trade>().FirstOrDefault();

但我一直在内心异常

{"Unable to cast object of type 'System.TimeSpan' to type 'System.IConvertible'."}

我尝试通过将时间映射更改为

来解决此问题
Map(x => x.Time).Column("tsTime").CustomType("timestamp").CustomSqlType("TIME(6)").Nullable();

Map(x =&gt; x.Time).Column(&#34; tsTime&#34;)。CustomSqlType(&#34; TIME(6)&#34;);

但没有任何作用

1 个答案:

答案 0 :(得分:0)

在DATE + TIME中使用单个字段。