问题标签 [ormlite-servicestack]
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.
ormlite-servicestack - 具有 DB 默认值且没有指定值的 ormlite 列不会出现在 INSERT 语句中
是否有一个设置我可以用来让 ormlite 在执行插入时忽略具有 DB 定义的默认值的列并且我没有为该列提供值?
ormlite-servicestack - 寻找如何使用 ServiceStack.OrmLite 从现有 SQL Server 架构自动生成实体的示例
我看到 ServiceStack.OrmLite Lite 有这个。
我觉得 ServiceStack 的这个声明并没有让我陷入困境,
Code-Gen DTO 更改的问题会破坏代码,禁止 DRY 强制抽象,并行实现中的多个版本
在我看来,这意味着将完整的 ORM 与 SS 一起使用而不是微型 orm 将完全做到这一点,或者我是否在这里?我不太确定,因为我自动生成实体但手动编码 dto。
servicestack - 自动引导 ID
使用 Guid Id 设置我的 poco 对象,它们似乎至少按预期存储......但我没有看到它为 Id 创建新的 Guid,除非手动完成。是否有设置它的技巧,以便 db.CreateDatabase() 将 id 字段设置为身份规范(mssql 服务器)或简单地使用 Guid.NewGuid() 自动填充它?
sqlite - 使用 SQLite 时如何让 ServiceStack.OrmLite 强制执行外键?
根据this other SO answer,SQLite似乎不会自动强制执行外键关系,并且必须为每个连接显式启用。这是 ServiceStack.OrmLite 的一个报告问题。我自己用 ServiceStack.OrmLite 3.9.33 和 SQLite 1.0.84 重现了这种行为,其中单元测试成功(允许删除具有外键引用的记录)但实际应用程序(合法地)失败。
我不清楚的是如何/在哪里执行必要的“PRAGMA foreign_keys = ON;” SQL 命令,使其适用于我的 SQLite 单元/集成测试的任何连接,但不适用于我的主要 SQL Server 连接。理想情况下,它似乎是 IDbConnectionFactory 注册的一部分。
任何人都可以帮忙吗?
编辑:级联删除将是处理这种情况的另一种方法,但是尽管使用ForeignKey属性在我的 FK 列上正确设置了这一点,但 ServiceStack.OrmLite 在与 SQLite 一起使用时似乎不遵守这一点(在此处注明),尽管后者支持为了它。这可能与原始问题有关,默认情况下禁用 SQLite 的 FK 强制执行,如果首先启用它,它将正常工作。
c# - 使用 ServiceStack ORMLite 上的标识列在多对多表上插入的最佳方法
昨天我发现了这个很棒的 ORM,并想对比 github 上提供的示例更复杂的东西进行一些测试。
这是我正在使用的模型
这就是我想要实现的目标(尽管它不起作用,因为在插入artistgenre 表时身份值是未知的)。
除了添加每一行并获取其标识值之外,还有一个简单的解决方案吗?
谢谢。
c# - 如何使用 OrmLite 获得固定大小的非空 varchar?
在 Poco 类中声明一个String
属性时,OrmLite 会varchar(8000) NULL
在数据库中为它生成一个列。例如,我有以下类和为其生成的表:
我想知道如何指定字段的长度。例如,FirstName 有 8000 个字符是没有意义的,我该如何强制NOT NULL
?和UserName
列Password
应始终具有值。
c# - ServiceStack ORMLite 和 Dapper 一起工作的问题
这是我使用 ServiceStack ORMLite 进行实验的第三天。我的示例项目曾经只与 Dapper 一起工作,现在它是 Dapper 和 ServiceStack ORMLite 的混合体,两全其美。
昨晚我正在为一个 Dapper 查询而苦苦挣扎。它基本上是一个选择加入 4 个表,在 ORMLite 的代码进来之前运行良好。现在它正在一遍又一遍地失败,因为表映射到对象。它不会破坏它只是为对象分配错误的值。
我不得不继续前进,作为一个临时解决方法,我所做的是执行 4 个选择中的每一个,而不使用 Dapper 的 QueryMultiple 进行 SQL 连接,然后在 C# 上一个一个地连接结果。
请不要开始笑。我知道这当然不是最好的解决方案。然而,它仍然会去 DB 一次,但感觉并不自然。当行数增加时,这很可能是一个性能问题。
今天早上我想我找到了问题的根源:我正在使用 ORMLite 删除和创建表,并注意到字段顺序与我预期的不太一样。在 ORMLite 代码之前,我只是手动运行 SQL 脚本,所以我决定了字段的顺序。由于我的项目需要根据最终用户的需要支持 MySql、Postgresql 和 SQL Server,因此保持此类脚本的三个版本同步会很痛苦。我想用 ORMLite 自动化这个过程,当然可以利用它。
现在让我解释一下我的理论,你们专家可能会决定我是对还是错。Dapper 使用连接的查询根据命名约定将每个表的结果拆分为映射到每个类。它期望“Id”或“id”字段是表中的第一个字段。
我知道 Dapper 有一个“SplitOn”选项来处理不遵循其命名约定的表(“IdProduct”作为 PK 而不是“Id”)但在我的情况下它不能像那样使用,因为我真的没有任何控制权ORMLite 的CreateTable函数中的字段是如何排序的。它可能最终以“id”在中间,因此导致我现在遇到的同样问题。
也许查看我的代码可以为您提供更多线索。这是在 ORMLite 之前运行良好的代码:
这是临时解决方法:
我正在研究 ORMLite 的代码,似乎ToCreateTableStatement函数可能是为了解决我的问题而修改的地方。也许在我的类定义中为每个字段添加一个属性来说明所需的字段创建顺序是否可行?
我正在考虑将其添加到FieldDefinition代码中:
并添加一个属性来装饰 C# 字段,如下所示:
然后在创建字段时,代码可以遵循此类属性的值,并允许控制最终字段在表格中的位置。
如果我走在正确的轨道上,请告诉我,或者,也许还有另一种比这个更优雅的选择。
提前致谢。
c# - Ormlite 未使用 ServiceStack MVC 分析器进行分析
我的服务堆栈 Web 服务中有 MVC 分析器,我看到请求被记录到 Nlog。
但是,当我尝试分析我的 PostgreSQL 数据库时,不会生成任何日志。
我的 global.asax.cs 中有:
和
servicestack - ServiceStack OrmLite Sqlite 异常
我有以下代码行:
我收到以下异常:
BadImageFormatException 试图加载格式不正确的程序。(来自 HRESULT 的异常:0x8007000B)
我认为这可能与 32 位和 64 位应用程序有关,所以我尝试了这两个版本的 dll。此外,我还通过 IIS 启用了 32 位应用程序。有人可以告诉我为什么我可能会收到此错误吗?
sql-server - ServiceStack Ormlite 和 RowVersion 支持
在更新期间支持 sql server rowversion 的最简单方法是什么?
我试过这个:
但这失败得很惨,因为它将版本比较为Varchar(8000)
, go figure。
不完全相同,但仍然是 ServiceStack 和 OrmLite 的问题:
急切加载相关实体描述的最佳方式是什么?我已经看到了,但注意到Join
正在签入变更集?这导致 POCO 类现在对每个外键都有额外的“忽略”描述。