问题标签 [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.
c# - .NET 4.0 + Linq + SQLite + DbLink - 我如何让它们一起工作?
我正在开发(或尝试开发)一个 C# 项目,该项目将数据存储在 SQLite 数据库中。我想使用 Linq 进行对象关系映射。根据我所阅读的内容,如果您下载System.Data.SQLite和dblinq ,则可以将其与 SQLite 一起使用。
虽然它主要适用于从数据库中读取数据,但在尝试插入任何内容时会出现 SQL 语法错误。我检查了 Linq 正在尝试执行此类查询的日志:
它似乎是 MS Server 的 SQL 查询,而不是 SQLite。令人沮丧的是这个SqlProvider(Sql2008)
。不应该用dblinq提供的东西代替吗?
我的数据库类如下所示:
连接字符串取自dblinq wiki。
为什么它不起作用?是因为我使用的是 .NET 4.0 吗?有没有人成功使用过这样的组合?是否有另一种方法来替换 Linq 提供程序?
编辑:表映射:(虽然我怀疑错误在这里,因为读取表(使用 foreach 循环)似乎有效)
表之间的所有关系都被注释掉以进行测试(没有帮助)。然后使用以下代码插入一个元素:
mysql - 超过 2 个表 linq to sql join
我在使用 linq-to-sql 和 mysql db 连接超过 2 个表时遇到问题(它在 2 个表上工作正常):
这是代码
这是我得到的错误:对象引用未设置为对象的实例。”} System.Exception {System.NullReferenceException}
这应该是一个简单的查询,但我无法让它工作。有人猜猜可能是什么问题吗?
谢谢
c# - 将 Linq 表达式传递给函数
我想将一个类的属性列表传递给一个函数。在基于属性列表的函数中,我将生成一个查询。与 Linq Select 方法中的功能完全相同。在这里,我将为 Ingress 数据库实现此功能。
举个例子,
在前端我想像这样运行一个选择,
我的实体类是这样的
我想像这样调用 Select 函数,
然后,使用结果我可以获得名称和地址属性的值。
我认为我的 Select 函数应该是这样的,
(*我认为这应该使用 Linq 表达式来完成。但我不确定输入参数和返回类型是什么。*)
这是尝试创建类似于 Linq 的功能。但我不是 Linq 表达式方面的专家。
麻省理工学院有一个名为DbLinq的项目,但它是一个大项目,我仍然无法从中获得任何帮助。
有人可以帮我开始这个吗,或者有人可以链接我一些有用的资源来阅读这个。
visual-studio-2010 - 在 IronPython 中使用 DbLinq
我正在尝试在 IronPython 应用程序中使用dblinq,但在开始时遇到了一些问题。尝试使用 clr.AddReference() 导入 dblinq 类时,它似乎看不到 dblinq。
我可以构建但不能访问库
1:我的 dblinq 源位于名为 Resources 的子文件夹中
clr.AddReferenceToFileAndPath("Resources/DbLinq.dll")
=> 找不到文件
clr.AddReference("DbLinq")
=> 无法添加对 dblinq 的引用
clr.AddReferenceToFileAndPath("C:/Development/DBLinq2/Dblinq.dll"
=> 成功
但仍然无法使用类from DbLinq import ...
解决方案
c# - DbLinq 的对象跟踪性能能提高吗?
我有一个通过 DbLinq 连接到 MySQL 数据库的 ASP.NET MVC2 站点。网站上会定期执行一组特定的操作,其中包括循环访问几个表中的一组特定记录并更新它们,以及在其他一些表中添加一些新记录。
我一直在用一组中等大小的数据进行测试。在我现在的特定测试集中,在更新时它最终会插入 44 个新行并更新 81 个其他行。但是我对 SubmitChanges() 的调用最终需要很长时间 - 大约 3-4 分钟,这似乎需要很长时间才能推动(我认为是)对数据库进行相对少量的更改。
我最终做了一些简单的分析,我发现问题似乎不在于在数据库上执行查询,甚至不在于构建查询。大多数时间似乎都被 UpdateEntity 内部对 AllTrackedEntities.ContainsReference() 的调用占用了。
为了给出一些实际数字,从最近的一次测试中我得到了:
- SubmitChangesImpl 中的时间:204884 毫秒
- UpdateEntity 中的时间:200908 毫秒
- ContainsReference 中的时间:148173 毫秒
- QueryBuilder.GetUpdateQuery 中的时间:685 毫秒
- QueryRunner.Update 中的时间:28 毫秒
- UpdateReferencedObjects 中的时间:49958 毫秒
- UpdateEntity 中的时间:200908 毫秒
如您所见,构建和运行 SQL 查询与检查是否存在对我们正在更新的实体的引用相比相形见绌(如果没有引用,则插入实体,尽管在这种情况下所有的更新实体存在)。虽然我理解为什么会发生这种情况,为了维护数据完整性等等,但这正在扼杀这些定期更新操作的性能。
我查看了将 ObjectTrackingEnabled 设置为 false,但这使得 DataContext 是只读的,这对我没有用 - 我的问题特别是更新的性能。
有什么办法可以提高更新的性能吗?就尝试在一次提交中推送 40-50 次插入和 80 多次更新而言,我是否以不太理想的方式使用 DbLinq?如果是这样,有没有更好的方法来解决这个问题?
postgresql - DbLinq "char" 特殊字符
我使用 DbMetal 工具为我的数据库生成一个类。它起作用了,但后来我在数据库中添加了一些“char”类型。现在,当我尝试生成类时,我得到了错误
有没有人遇到过这个?有解决方法或替代方法吗?
提前致谢!
c# - Nullable 类型之间未定义 Equal和 Int32
我正在编写一个无聊的应用程序来管理患者及其临床病史。我将 SQLite 与 DbLinq 库和 DbMetal 代码生成实用程序结合使用。以下是从底层数据库中提取的生成代码中的两个类:
我使用以下代码向患者添加地址:
Database.Source 是在生成的代码中扩展 DataContext 的类的实例。在 SubmitChanges 上,我收到此异常:
“在 Nullable(Of Int32) 和 Int32 之间未定义相等运算符。”
消息不是逐字报告的,但意思是一样的。堆栈跟踪指向 DbLinq 代码,更准确地说是源文件 DbLinq.Data.Linq.DataContext.cs 的第 709 行。您可以在此处找到源文件:http: //dblinq.codeplex.com/SourceControl/changeset/view/16800#314775(在方法 SetEntityRefQueries(object entity) 的主体下)。我发现问题是在将外键值与表达式树中的常量进行比较时出现的,但我无法获得其他信息。你能帮我找到问题吗?
注意:在调用 SubmitChanges 之前,字段 address.PatientID(外键)实际上设置为正确的值。
c# - 无法使用 DbLinq 删除子实体
这个问题与我之前的问题有关。你可以在那里找到几乎所有的代码,除了这里报告的异常。我用 int 字段替换了可为空的字段,并且生成的代码将 null 我放在 -1 的位置。通过这种方式,我设法解决了 DbLinq 代码引发的恼人异常。但现在我不能删除子实体!特别是,我有一个与一些地址相关的患者。表 PatientAddresses 包含三元组中的所有地址(PatientID、Address、DomicileStatus),其中前两个成员构成表的主键。我写了一个测试来指出这个问题:
测试在指示的行失败。长话短说,即使我删除了一个地址,它也会保留在数据库中。我什至尝试删除相应的 PatientAddress 行,但无济于事。我尝试了三个或四个变体,但我无法删除患者的地址。用于生成这些表的代码如下:
我想不出避免这种行为的方法,谷歌也无济于事。
sqlite - 在 Windows 应用商店应用程序中使用 dblinq 到 SQLite 会通过商店验证吗?
我一直在试图弄清楚如何在 Windows Store 应用程序中获得一个体面的 LINQ 来访问 ORM 数据库。我发现的只是 SQLite 和 sqlite-net NuGet 包。后者有点糟糕,因为我没有任何类似 .dbml 的结构来解析关系并提供导航属性以便于查询(那时不需要手动连接)。
我想知道:
- dblinq 与 SQLite 结合是否提供此功能?
- 使用它会通过 Windows 应用商店验证吗?
谢谢 !
更新:我在研究中使用的一些链接:
- 关于 SQLite 和 Windows 8 的著名 Tim Heuer 帖子:http: //timheuer.com/blog/archive/2012/08/07/updated-how-to-using-sqlite-from-windows-store-apps.aspx
- DBlinq:http ://code.google.com/p/dblinq2007/
- sqlite-net:http ://code.google.com/p/sqlite-net/
- 说明 ADO.NET 的有趣讨论是不可能的:http ://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/e9cdd75d-03e4-4577-988e-4c02a52e3f50
sqlite - DbLinq DbMetal - 添加外键时“字典中不存在给定的键”
这是我最初的 SQLite 数据库
如果我运行DbMetal /provider:Sqlite /conn "Data Source=bms4.db3" /dbml:Model.dbml
,它将成功创建 dbml 文件。
但是如果我添加一个外键,这样
运行相同的命令
会给出这个错误:
如何将外键关系引入 DBML?