1 subsonic
我正在使用SubSonic(v3.0.0.3)使用SimpleRepository对SQLite进行简单的对象映射.使用类型字符串,DateTime,Guid和int的属性,一切正常.当我尝试向对象添加bool(或Boolean)属性时,我可以将它添加到数据库中,但是当我尝试检索它时,我收到以下错误消息:
"类型'System.Byte'的对象无法转换为'System.Boolean'类型."
我尝试过几种不同的方式检索数据.以下是一些示例(当有问题的对象没有任何bool属性时,它会起作用):
var myObjs = repo.All<MyObj>();
Run Code Online (Sandbox Code Playgroud)
要么
var myObjs = from m in repo.All<MyObj>()
orderby m.Title
select m;
Run Code Online (Sandbox Code Playgroud)
我不确定这是一个错误,还是我做错了什么.是否有其他人能够使用SimpleRepository将此数据类型映射到SQLite?
谢谢!
C
为我自己解决了这个问题,不确定它是否是亚音速的错误,但是挖到源中找到修复.
从github获取亚音速源并打开
亚音速-3.0\SubSonic.Core\SQLGeneration \架构\ SQLiteSchema.cs
public override string GetNativeType(DbType dbType)
{
switch(dbType)
{
case DbType.Object:
case DbType.AnsiString:
case DbType.AnsiStringFixedLength:
case DbType.String:
case DbType.StringFixedLength:
return "nvarchar";
case DbType.Boolean:
return "boolean"; // <-- This was set to "tinyint"
case DbType.SByte:
case DbType.Binary:
case DbType.Byte:
return "longblob";
case DbType.Currency:
return "money";
Run Code Online (Sandbox Code Playgroud)
...
注意我评论的地方,Subsonic现在将.net DbType映射到SqlLite类型"boolean"而不是"tinyint".在发布模式下重建并获取新的SubSonic.Core.dll并替换它.
如果您不熟悉git,我可以通过cygwin添加一些关于快速克隆的说明.如果你没有时间,我可以给你现在使用的dll,但是这是一个简单的改变,最好自己改变它,而不是从未知中获取编译的dll;)
| 归档时间: |
|
| 查看次数: |
1016 次 |
| 最近记录: |