4

次のスキーマを持つ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 => x.Time).Column("tsTime").CustomSqlType("TIME(6)");

しかし、何も機能しません

4

1 に答える 1

0

DATE + TIME には単一のフィールドを使用します。

于 2015-04-18T18:17:53.003 に答える