问题标签 [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.

0 投票
1 回答
1158 浏览

servicestack - ServiceStack.OrmLite 中 SQL Server 异常处理的最佳实践?

我将 ServiceStack.OrmLite 与 SQL Server 提供程序一起使用。

给定下面的代码片段:

  1. 是否有检索 SQL Server 异常的最佳实践?

  2. 知道一条记录是否在 db.Single 调用的结果中的最佳方法是什么?当使用无效的消息 ID(即不在数据集中的消息 ID)调用 db.Single 时,似乎出现异常。如果数据库中存在消息 ID,则调用无异常返回。有没有办法在没有 try catch 块的情况下做到这一点?

如果在没有 try/catch 块的情况下进行调用,则会出现异常:

ArgumentNullException 值不能为空。
参数名称:ENSMessageEntry: 'ID = 25' 不存在

这是我的代码:

0 投票
1 回答
2165 浏览

nunit - 使用 NUnit 对 ServiceStack.OrmLite 进行单元测试时,如何将 Db 注入服务类?

我有兴趣使用“新 API”(从 ServiceStack.ServiceInterface.Service 继承)为使用 ServiceStack 创建的一些服务类编写单元测试(使用 NUnit)。在使用 AppHost 托管在 ASP.NET 应用程序中时,服务的 Db 属性已正确自动连接,但在该环境之外运行时,我似乎无法找出正确的技术。我在 ServiceStack 中看到了各种与测试相关的命名空间和类,但找不到一个明确的示例,其中服务的 Db 属性被注入,而不是简单地直接设置连接工厂,然后调用各种 IDbConnection 扩展方法(插入、选择等)。

我尝试让我的测试类从 ServiceStack.ServiceInterface.Testing.TestBase 继承并覆盖其 Configure 方法来注册一个 IDbConnectionFactory(使用“:memory:”),以及OrmLiteConfig.DialectProvider = SqliteDialect.Provider;在我的 TestFixtureSetUp 中进行设置,但是当我继续得到 NullReferenceException 时调用我的服务方法(在 ServiceStack.ServiceInterface.Service.get_Db() 处)。Funq 容器似乎没有自动连接任何东西。

SQLite 本身已正确设置,我可以通过绕过我的服务类并简单地执行直接 IDbConnection 调用的更简单的单元测试来确认这一点。

我错过了什么?

编辑

似乎对 ServiceStack 服务进行单元测试需要存在主机和客户端,尽管看起来有一些方法可以设置它以避免序列化成本(使用 DirectServiceClient,如此处所示 ——尽管我没有成功地让它在我的情况下工作。我设法使用 AppHostHttpListenerBase 方法(请参见此处)使其工作,尽管它更多的是集成测试而不是单元测试(因此速度较慢)。

0 投票
2 回答
827 浏览

ormlite-servicestack - servicestack ormlite sqlite DateTime 在插入时获取时区调整

我正在尝试 ormlite。我发现当我插入一个具有 DateTime 属性的对象时,它会被 ormlite 应用到 -8:00(我的时区是 +8)。它应该按字面意思插入时间。就我而言,它已经是UTC。

但是从 ormlite 中读取值,+8 并没有被重新应用。

这是一个已知的错误?

谢谢

0 投票
3 回答
8093 浏览

sql-server - 如何在 ServiceStack OrmLite 中检索自动递增的 ID?

对于具有标识的表:

向数据库中插入新行时,检索对象 Id 的最佳方法是什么?

例如:

db.Insert<> (new User());

插入后Id的值为0,但在数据库中显然不是这样。我能看到的唯一可能性如下:

但是,我不相信这是一个安全的电话。如果同时发生 100 个插入,则可能会返回另一个插入的 Id。在 EF 中,当您执行插入操作时,会为您设置 ID。

有谁知道解决这个问题的最佳方法?

0 投票
3 回答
528 浏览

asp.net - OrmLite 真的与数据库无关吗?

我是 Service Stack 和 OrmLite 的新手,并且正在探索 ORMLite 作为 Entity Framework 的替代方案。我对此有 2 个问题: - EF 吸引我的原因是能够将数据库操作和业务数据模型分离到单独的层中 - EF 可以使用您在配置文件的连接字符串中指定的任何内容运行。ORMLite 似乎对不同的数据库有不同的风格,这让我很担心,因为我不想重复进行代码更改。

我理解正确吗?请澄清

谢谢

苏拉杰

0 投票
1 回答
382 浏览

servicestack - ServiceStack 中 DTO 中的值结构

我有一种方法可以正确序列化 DTO 中的结构,或者更好地让框架以某种方式将结构视为 dto。

我已被告知 JsConfig.TreatValueAsRefTypes 值,但这仅适用于 json,对吗?xml、soap、mq 等呢?

另一方面,我也无法弄清楚我在使用 JsConfig.TreatValueAsRefTypes 时做错了什么,编译器似乎认为它是在静态上下文中调用的:非静态字段需要对象引用,方法......

0 投票
4 回答
4792 浏览

c# - 在运行时向 POCO 类添加属性

我为我的项目选择了ServiceStack OrmLite,这是一个纯面向数据的应用程序。我愿意允许最终用户创建自己的以 XML 格式定义的对象类型,这些对象类型将用于在运行时使用CodeDOM生成类。

我还将定义应用程序所需的一些“系统”对象(即User),但我无法预见最终用户将使用的所有属性,因此我正在寻找一种方法来允许扩展我在设计时创建的类。示例如下

最终用户想要一个Email和一个Address. 他应该能够将 2 个属性添加到上层类,整个类将是(OrmLite 仍然可以使用它,因为它允许覆盖:

我知道这样做可能会导致系统崩溃(如果类已经实例化),所以我正在寻找避免这个问题并模仿我的需求的最佳方法。

0 投票
2 回答
7499 浏览

design-patterns - ServiceStack + ORMLite + 存储库模式

我正在尝试使用 ORMLite 实现存储库模式。我最初是这样开始的:

但是在我的存储库中的每种方法下都有这个似乎有点重复?所以我创建了一个数据上下文类,我的所有存储库都继承自:

这是那个DataContext类:

然后我只需在我的方法中执行此操作:

我只是好奇这是否是一个好的设计模式,以及其他人在使用存储库模式通过 ORMLite 进行数据访问时提出了什么。

0 投票
1 回答
792 浏览

servicestack - 使用 Autofac 的 Servicestack 无法解析 IRequestContext

我正在尝试使用服务堆栈的缓存设施。这些是通过 RequestContext 访问的,它由 IOC 在您的 Service 中注入。

如果您使用默认的 Funq IOC,这将按预期工作,当您挂接 AutoFac 时它不起作用,RequestContext 为空,我不确定如何配置 autofac 来构建它。这里有什么线索吗?我的 AutoFac 配置:

编辑:

我的服务已经扩展了 ServiceStack.ServiceInterface.Service:

它实现了 IRequiresRequestContext,RequestContext 为空。如果我删除 autofac,那么它会按预期工作。使用 Autofac RequestContext 为空

0 投票
2 回答
7675 浏览

servicestack - ServiceStack / ORM Lite - 外键关系

我有以下 POCO:

Comment它在我和Tag实体上有一个 FK 。所以我想在我的服务回复中返回那些,但它说'Invalid Column name 'Comments''and 'Invalid Column name 'Tags''。如何使用 ORM Lite 查看哪些评论和标签附加到我的帖子?在 EF 中,我会简单地使用 Include 来延迟加载我的相关表信息,什么是等价的?

编辑

作为对答案的回应,我这样做了:

然后在我的服务中,我返回这个,我的实体PostTag是一个交叉实体,因为我PostTag实体是 M:M 关系:

不确定它是否是一个好的设计模式?

编辑 2

这是我的实体: