首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NPOCO Fetch - Object必须实现IConvertible

NPOCO Fetch - Object必须实现IConvertible
EN

Stack Overflow用户
提问于 2014-03-22 03:59:54
回答 2查看 3.5K关注 0票数 2

这是我第一次尝试使用NPOCO,我正在尝试读取MS SQLEXPRESS数据库

来自NuGet的NPOCO "2.2.49“,SQLEXPRESS 2008 R2,VS 2013,.NET 4.5

Connectionstring为

代码语言:javascript
复制
<connectionStrings>
    <add name="TrackTime.Properties.Settings.connectionDB" connectionString="Data Source=ame-PC\SQLEXPRESS;Initial Catalog=TrackTime;Integrated Security=True"
  providerName="System.Data.SqlClient" />
</connectionStrings>

代码是

代码语言:javascript
复制
db = new Database("TrackTime.Properties.Settings.connectionDB");
var tracks = db.Fetch<trackdatum>();
// List<trackdatum> tracks = db.Fetch<trackdatum>();

trackdatum class
        using NPoco;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace TrackTime
    {
        [TableName("trackdata")]
        [PrimaryKey("trackdata_id")]
        [ExplicitColumns]
        public partial class trackdatum
        {
            [Column]
            public string trackdata_customer { get; set; }

            [Column]
            public DateTime trackdata_date { get; set; }

            [Column]
            public DateTime trackdata_end { get; set; }

            [Column]
            public int trackdata_id { get; set; }

            [Column]
            public string trackdata_note { get; set; }

            [Column]
            public string trackdata_project { get; set; }

            [Column]
            public DateTime trackdata_start { get; set; }

            [Column]
            public string trackdata_task { get; set; }

            [Column]
            public TimeSpan trackdata_worked { get; set; }
        }
    }

在这条线上

代码语言:javascript
复制
var tracks = db.Fetch<trackdatum>();

(我也尝试了注释行,结果也是一样的。)

我得到了这个异常

代码语言:javascript
复制
System.InvalidCastException was unhandled
HResult=-2147467262
Message=Object must implement IConvertible.
Source=mscorlib
StackTrace:
   at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)
   at NPoco.PocoData.<>c__DisplayClass19.<GetConverter>b__14(Object src)
   at poco_factory_0(IDataReader , trackdatum )
   at NPoco.Database.<Query>d__7`1.MoveNext()
   at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
   at NPoco.Database.Fetch[T](Sql sql)
   at NPoco.Database.Fetch[T](String sql, Object[] args)
   at NPoco.Database.Fetch[T]()

斯奈普...

为什么?我该如何修复它呢?

// Anders

EN

回答 2

Stack Overflow用户

发布于 2014-03-22 04:09:56

取决于您的堆栈跟踪,它需要您的POCO属性必须实现IConvertible,而TimeSpan没有实现。

票数 3
EN

Stack Overflow用户

发布于 2014-05-27 15:41:03

您可能已经解决了这个问题,但问题可能是您正在从数据库中获取数据类型为TIME的列,并尝试将其映射到C#类中数据类型为DATETIME的属性。如果是这样的话,在C#代码中将数据类型更改为TIMESPAN,我相信它应该可以工作。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22568429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档