问题标签 [dblinq]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
44931 浏览

sqlite - 如何在 SQLite 的 where 子句中使用布尔字段?

这似乎是一个愚蠢的问题,然而。可能是我的 IDE 搞砸了我。这是代码(这是从 DbLinq 生成的):

如果我运行此查询,我会返回三行,其中包含两个布尔字段,称为 Active 和 Public。添加注释掉的行不返回任何行。将行更改为以下任何一项:

它不起作用。错误或没有结果。我已经对此进行了谷歌搜索,发现那里缺乏实际的 SQL 查询。我们在这里。

那么:如何在 SQLite 的 where 子句中使用布尔字段?

IDE 是 SQLite 管理员。

更新:嗯,我找到了答案。SQLite Administrator 显然会让你组成自己的类型;生成的创建 SQL 如下所示:

查询的修复是

正如第一个回答者指出的那样,这里真正的问题是,SQLite 中没有布尔类型。不是问题,而是需要注意的事情。我正在使用DbLinq生成我的数据层;也许它不应该允许映射 SQLite 不支持的类型。或者它应该将所有不是 SQLite 原生的类型映射到字符串类型。

0 投票
2 回答
878 浏览

linq-to-sql - DBLinq 不生成 where 子句

我正在使用 MySQL 和 Postgresql 测试来自 SVN Trunk 的 DBLinq-0.18 和 DBLinq。我只使用了一个非常简单的查询,但在两个数据库上 DBLinq 都没有生成 Where 子句。我已经通过打开 Postgresql 上的语句记录来确认 DBLinq 正在发送的确切请求。

我的 Linq 查询是:

查询工作正常,但 DBLinq 生成的 SQL 格式如下:

没有 Where 子句,这意味着 DBLinq 必须在运行 Linq 查询之前将整个表拉下来。

有没有人对 DBLinq 有任何经验并且知道我可能做错了什么?

0 投票
1 回答
658 浏览

c# - DbLinq 问题(关键字 New 或 MemberInit 引发异常)

我正在将一个巨大的 Web 应用程序从 SQL Server 迁移到 MySql。该应用程序使用 Linq,所以我使用的是 DBLinq。目前大多数事情都正常工作,除了在几页上我得到一个奇怪的错误。一切都是从这个开始的:

我显然在 CPost 类中有一个 ForumID,所以这不是问题。我尝试将查询复制到一个单独的文件并开始删除其中的一部分以查看导致错误的原因。过了一会儿,我发现这条线:

引发异常:

在线:

但是这段代码:

跑得完美。

如果需要,我可以提供更多信息,但是我不能发布整个源代码,因为它非常庞大(超过 10,000 行,不包括 html)。有没有人遇到过类似的问题?

编辑:经过进一步调查,我发现 DbLinq 抱怨,因为它没有从查询中找到关键字 New 或 MemberInit

工作时:

引发异常。异常发生在 trunk/src/DbLinq/Vendor/Implementation/SqlProvider.cs 的第 285行

0 投票
5 回答
1026 浏览

c# - DbLinq - 缓存问题

我在 ASP.NET MVC 网站中使用 linq to sql for MySql(使用 DbLinq)。我有一个奇怪的缓存问题。在我的 Repository 类中考虑以下方法:

'MyDataContext' 是 DbLinq 生成的到我的数据库的映射,它继承自 DataContext。我没有在这里重用 datacontext(上面的代码看起来有点傻,但我想绝对确定这不是一些 datacontext / mysqlconnection 重用问题)。

发生的情况是,无论我使用什么 userId 调用两种方法中的任何一种,结果都保持不变。时期。尽管我可以看到repo.Messages有超过 10 个结果,并且具有不同MessageFromMessageTo值,但我只得到了第一个查询的结果。因此,如果我调用GetInbox(4374)它会给我消息 A 和消息 B。GetInbox(526)之后调用仍然给我消息 A 和 B,即使有消息C 和 D的用户ID 为 526。我必须重新启动应用程序才能看到任何更改

这里发生了什么?我确信我做的事情是如此愚蠢,以至于当有人向我指出时我会感到羞耻。如果我没有做一些非常愚蠢的事情,那么我会觉得这个问题很奇怪。我读到不重用 DataContext,但我不是。为什么会出现这个缓存问题?下面是我的控制器代码,但我怀疑它是否重要:

虽然在 SO 上有类似的问题,但我还没有找到这个确切问题的答案。非常感谢!

更新:将代码更改为:return repo.Messages.ToList().Where(m => m.MessageFrom == userId);修复它,然后它工作正常。似乎是一些缓存问题。但是,我当然不想那样修复它。更改代码以便在查询后不释放数据上下文并不能解决问题。

0 投票
3 回答
478 浏览

c# - .NET/C# Drizzle 数据库客户端

我计划在我的下一个 C# Mono应用程序中使用Drizzle由于 Drizzle 没有可用的 C# 客户端,我想我会尝试通过转换Java 客户端来编写自己的客户端,然后使其与DBLinq一起使用。

看到 Java 客户端后,我意识到这是一个我预期的更长的工作,而且我没有时间。此外,Java 客户端还没有那么成熟。

由于有一个官方的 Drizzle C 客户端库 ( libdrizzle ),因此编写 C# 包装器可能是最好的解决方案。有没有可用的工具可以帮助生成代码?

0 投票
1 回答
1805 浏览

c# - DBMetal 为 sqlite_sequence 生成无效类

我正在使用 DBLinq 和 DBMetal.exe 从 SQLite 数据库生成类似于 Linq-to-SQL 的类。每次我使用 DBMetal 重新生成我的 DataContext 时,它都会为 sqlite_sequence 生成一个类。问题是 sqlite_sequence 不是一个合适的表,所以这个类不完整。

问题是,DBMetal.exe 能否更好地生成此类,或者我可以告诉 DBMetal 忽略该类吗?

谢谢!

这是我的 DBMetal.exe 调用

这是为 sqlite_sequence (这是一个系统表)实际生成的 SQL:

这是生成的损坏类(注意属性、名称和序列,它们没有数据类型。这就是问题所在):

0 投票
3 回答
1146 浏览

mono - DbLinq 和 Mono 2.4:一起工作?

希望这是一个愚蠢的问题,并且那里确实有一个简单的解决方案,但是...

有没有人成功让 DbLinq 在 Mac OS X 10.5 上与 Mono 2.4 很好地配合使用?

我已经准备好我的 SQLite 数据库,但在我的一生中,我找不到 sqlmetal 来生成我的对象。

我猜我可能必须下载包含 sqlmetal 的以前版本的 Mono,构建并安装它,然后在 Mono 2.4 上使用从该版本生成的代码......但我希望不惜一切代价避免它.

0 投票
1 回答
3601 浏览

c# - 通过 DbLinq 使用 Linq to SQLite 创建记录

我已经(经过一些重大努力)让 DbLinq 在 OS X 上使用最新版本的 Mono。

有没有人通过 DbLinq/Sqlite 成功创建了数据库实体?

例如,我有下表:

我已经生成了我的 *.cs 文件,并且正在使用以下代码来尝试创建一个新的 UserType 条目:

对 SubmitChanges 的调用引发了与 @ 相关的无效语法的异常(我猜测在参数化查询中进行插入)。看起来生成的代码是特定于 SQL Server 的。是否有我缺少的修复或标志,或者不支持通过 DbLinq 将记录插入 SQLite?

0 投票
4 回答
9124 浏览

c# - 将 MySQL DATETIME 转换为 System.DateTime

我正在使用带有DbLinq的 MySQL 数据库,但抛出异常:

“无法将 mysql 日期时间转换为 system.datetime”

我该如何解决这个问题?

0 投票
1 回答
1674 浏览

sqlite - SqlMetal 无法从 Sqlite 数据库创建 DBML

我正在尝试使用新的 Mono 2.6 SqlMetal 工具为简单的 Sqlite 数据库创建 DBML 文件。架构非常简单,如下所示:

我正在尝试使用以下内容创建 DBML 文件:

我得到以下输出:

我可以使用 /code 选项来创建 C# 代码文件,但是在生成 DBML 时它总是失败。

我错过了一个微妙的命令行选项,还是这个新版本的 SqlMetal 不适用于 Sqlite?