问题标签 [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.
sqlite - 我如何将 DBLinq >> DBMetal 工具与 sqlite 一起使用?
请提供命令行工具 dbmetal 的示例,以从 sqlite 数据库生成代码文件。
c# - 删除后立即将对象重新插入数据库(DbLinq)
我有一个 MySql 数据库,其一般结构如下所示:
我正在使用 InnoDB 来允许外键,并且所有指向 a 的外键ProbeDefinition
都有 set ON DELETE CASCADE
。
我遇到的问题是,当我ProbeDefinition
在代码中删除 a 时,它会立即重新插入。级联删除正确发生,因此其他表被清除,但似乎 LINQ to SQL 可能无缘无故地发送插入。检查数据库上的 ChangeSet 属性显示 1 个删除,并且没有插入。
我正在使用以下一小段代码来执行删除:
MySql 中的日志显示运行时正在执行的以下命令:
什么可能导致这种不必要的INSERT
?请注意,Manufacturer
以完全相同的方式删除 a 会正确删除,并带有以下日志:
编辑:经过进一步测试,这似乎只发生在我用ProbeDefinition
s 列表填充 ListBox 之后。
我尝试在运行以下代码段之前和之后运行上述删除代码:
该对象在所述代码运行之前被正确删除,但在此之后的任何时间,它都会在删除之后执行插入。它不喜欢对象在某处被引用的事实吗?
这是我正在运行以测试从中间窗口中删除定义的代码:
c# - dblinq 有多成熟?
我正在开发一个需要与数据库通信的应用程序。该应用程序是用 C# 编写的。我很喜欢 LINQ 和自动生成类来表示数据库及其表,所以首先我考虑使用 SQL,因为 .NET 仅支持 LINQ to SQL。现在我更倾向于 MySQL,主要是因为扩展 SQL 服务器可能会变得昂贵,而且因为我公司内的人更熟悉 MySQL,包括我在内。这就是 dbLinq 的用武之地。从我读到的内容来看,dbLinq 对于简单的查询效果很好,但可能会在更复杂的查询上失效。您能分享您使用 dbLinq 的经验吗?dbLinq 是否仍应被视为实验性的,还是我可以期望在没有很多问题的情况下使用它?
谢谢,巴斯
编辑:
我读到 DbLinq 不能处理多个外键,任何人都可以评论这是否仍然如此吗?
c# - ORM 是否有任何方法可以确定 SQLite 列是否包含日期时间或布尔值?
我一直在考虑在我的下一个项目中使用 SQLite,但我担心它似乎缺少适当的datetime
数据bit
类型。
如果我使用 DbLinq(或其他一些 ORM)生成 C# 类,属性的数据类型会被“简化”吗?日期时间数据是否会放置在 typestring
或的属性中double
?布尔数据是否会放置在 type 的属性中int
?
如果是,有什么影响?我正在设想一个场景,我需要编写具有更具体数据类型的整个第二层类,并进行大量转换和强制转换,但也许它没有我担心的那么糟糕。如果您对这种情况或类似情况有任何经验,您是如何处理的?
database - DbMetal 在 SQLite 中重复外键引用时窒息 - 有什么想法吗?
我一直在努力让 DbMetal 处理我的 SQLite 数据库。我终于把问题隔离了。它不允许一个表对同一列有两个外键引用。
例如,具有这两个表的 SQLite 数据库将失败:
我收到此错误:
DbMetal:序列包含多个匹配元素
如果我摆脱第二个外键引用,则不会发生错误。
所以,这有效:
但我真的需要两个“人”列来引用人表。
我为此提交了一份错误报告,但同时我可以使用一种解决方法。有任何想法吗?
c# - 你如何投射一个 LinqToSql 表作为表TEntity : IEntity 在哪里?
我正在尝试将 DbLinq 与 SQLite 数据库一起使用,但是当我尝试将一个ITable
作为Queryable<TEntity>
.
DbLinq 中存在一个已知错误(问题 211),这可能是我的问题的根源,但我想确保我的代码是正确的,如果是,请找出我可以做些什么来解决错误。
这是尝试进行强制转换的通用存储库方法:
这可以编译,但是如果我传入接口IPerson
并且TEntity
表中实体的类型是Person
(其中Person : IPerson
),我会从 DbLinq 收到此错误:
S0133:实现QueryMethod Queryable.Cast。
我为什么要这样做?
我有一个库项目,直到运行时才知道实体的类型,但它确实知道实体的接口。所以,我正在尝试转换为接口类型,以便我的库项目可以使用数据。
问题:
- 我是在尝试一个不可能的演员还是这绝对是 DbLinq 中的一个错误?
- 我还能如何解决我的问题?
更新
我重新设计了我的存储库类,所以它现在需要 aTEntity
和a TEntityBase
,其中TEntity
是实体的实际类型,并且TEntityBase
是我试图转换到的接口。重要的是,我现在在我的类定义中有以下where
子句:
这允许我将我的Table
属性存储为 aTable<TEntity>
而不是 a ITable
,这允许我使用AsEnumerable()
(正如斯蒂芬建议的那样)。这是修改后的方法:
到目前为止,这似乎可以解决问题。
c# - 为什么在 DataContext 上调用 Dispose() 后可以枚举 DbLinq 查询?
更新- 答案显然是 DbLinq 没有Dispose()
正确实现。哦!
以下是各种误导 - 底线:DbLinq 不(尚未)等同于 LinqToSql,正如我最初问这个问题时所假设的那样。谨慎使用!
我将存储库模式与 DbLinq 一起使用。我的存储库对象实现了,IDisposable
并且该Dispose()
方法只做一些事情——调用Dispose()
. DataContext
每当我使用存储库时,我都会将其包装在一个using
块中,如下所示:
这个方法返回一个IEnumerable<Person>
,所以如果我的理解是正确的,那么在Enumerable<Person>
遍历之前实际上不会对数据库进行查询(例如,通过将其转换为列表或数组或在循环中使用它foreach
),如下例所示:
在这个例子中,Dispose()
在设置之后立即被调用persons
,这是一个IEnumerable<Person>
,这是唯一一次被调用。
所以,三个问题:
- 这是如何运作的?已处置后,处置后仍如何
DataContext
查询数据库以获取结果?DataContext
- 实际上是做什么的
Dispose()
? - 我听说没有必要(例如,请参阅此问题)处置 a
DataContext
,但我的印象是这不是一个坏主意。有什么理由不处理 DbLinqDataContext
吗?
mysql - 用于生产系统的 DBLinq?
我们正在开发一个带有 C# 代码的 ASP.NET Web 应用程序。数据库是使用 InnoDB 的 MySQL 5.1。数据访问层使用 ADO.NET 调用存储过程,然后根据结果集构建各种数据结构(无对象映射)。这很好用,但有点冗长。
毫不奇怪,我们在设计数据模型的第一个版本时犯了一些错误,但经验让我们变得更聪明,我们决定重构数据模型。我们不必改变我们的数据访问层,但我们也在考虑我们的选择。
如今,我们很难忽视 ORM 工具的流行。我们觉得我们落后了,或者不熟悉他们。不仅如此,我们还设计了一个对象模型,可以很好地描述我们的数据模型。我们会考虑的主要 ORM 工具是 NHibernate、ADO.NET 实体框架和 LINQ to SQL。我们更喜欢 LINQ 到 SQL,因为我们已经读到(在 SO 上)它比完整的 ORM 工具更轻量级。
我们认为使用 ORM 工具的一个缺点是学习曲线,但我们已经看到使用 LINQ 如何减少我们必须编写的代码量,从长远来看可以节省我们的时间。但是,我们使用的是 MySQL,而不是 SQL Server。
所以我的问题是,DBLinq对生产系统是否足够好?或者,LINQ to SQL 是否足以让我们转向 SQL Server 2008? 顺便说一句,我更喜欢使用 SQL Server 而不是 MySQL,但成本是明显的缺点。在 BizSpark 上呆了 3 年后,我们会以 6000 美元的价格上钩。或者,我们应该考虑使用其他 ORM 工具吗?或者,我们应该忽略炒作而不使用 ORM 工具,而是利用LINQ to DataSet吗?
我在 SO 上搜索了有关 DBLinq 的信息,但只找到了 17 个带有DBLinq 标签的问题,因此它似乎并不受欢迎。
编辑
虽然dotConnect for MySQL支持 LINQ,但这是另一种选择。
谁能谈谈该驱动程序在编写 LINQ 查询方面的表现如何?
c# - 在 MySQL/Dblinq 项目中更改语言/文化
我对数据库编程不是很熟悉,但我有一个 Mysql-Database,我在 C# 下使用 Dblinq 访问它。现在当我输入日期、数字等时,使用的是英文符号,但我的客户需要德语。如何将我的数据库从英语切换到德语?(数据库仍然是空的,如果需要,我可以轻松地重新创建它)
提前致谢!
基督教
sql - 如何找出在 DbLinq 和 SQLite 中使用 LINQ to SQL 执行的确切查询?
我将 DbLinq 与 SQLite 一起用于我的一个小项目。有没有办法查看在幕后执行的实际 SQL 查询?
我记得实习时有一个 SQL Server 监控程序,但我担心 SQLite 是一个完全不同的野兽。