首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SimpleRepository布尔映射问题

SimpleRepository布尔映射问题
EN

Stack Overflow用户
提问于 2009-07-16 13:36:15
回答 3查看 1K关注 0票数 1

我使用SubSonic (v3.0.0.3)从SimpleRepository到SQLite进行简单的对象映射。对于string、DateTime、Guid和int类型的属性,一切都可以正常工作。当我试图向对象添加一个bool (或Boolean)属性时,我可以将它添加到数据库中,但是当我试图检索它时,我得到了以下错误消息:

“无法将'System.Byte‘类型的对象转换为’System.Boolean‘类型。”

我已经尝试了几种不同的方法来检索数据。以下是一些示例(当有问题的对象没有任何bool属性时,它们会起作用):

代码语言:javascript
复制
var myObjs = repo.All<MyObj>();

代码语言:javascript
复制
var myObjs = from m in repo.All<MyObj>()
    orderby m.Title
    select m;

我不确定这是一个bug,还是我做错了什么。其他人可以使用SimpleRepository将此数据类型映射到SQLite吗?

谢谢!

C

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-07-16 20:28:40

为我自己修复了这个,不确定它是否是亚音速的bug,但深入到源代码中寻找修复。

从github抓取亚音速信号源并打开

SubSonic-3.0\SubSonic.Core\SQLGeneration\Schema\SQLiteSchema.cs

代码语言:javascript
复制
   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";

..。

注意我已经注释过的地方,Subsonic现在将.net DbType映射到SqlLite类型"boolean“而不是"tinyint”。在发布模式下重新构建并获取新的SubSonic.Core.dll并替换它。

如果你不熟悉git,我可以通过cygwin添加一些关于快速克隆的说明。如果你没有时间,我可以给你我现在正在使用的dll,但是这是一个简单的改变,最好是自己改变它,而不是从未知的地方获取一个编译的dll ;)

票数 5
EN

Stack Overflow用户

发布于 2009-08-19 06:27:02

我也遇到了这个问题&找到了问题所在。

在GetDbType()函数的SQLite.ttinclude中,没有定义布尔值。

只需将此代码添加到交换机中即可

case "boolean":返回DbType.Boolean;

它应该会再次工作;D

票数 0
EN

Stack Overflow用户

发布于 2009-08-22 16:26:52

以下是MySQL:MySQL TINYINT(1) boolean conversion fails和相关的commit:fixed situation where TreatTinyAsBoolean had no effect with default database character set to UTF8.的错误报告

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

https://stackoverflow.com/questions/1137649

复制
相关文章

相似问题

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