问题标签 [iusertype]

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 投票
3 回答
2185 浏览

c# - 使用 IUserType 的 NHibernate linq 查询

在我的项目中,我使用了一个 IUserType (BooleanM1) 来处理布尔值并将 -1 表示为真,将 0 表示为假值到数据库。到目前为止一切正常。映射如下所示:

因此,如果我执行如下查询

抛出异常:

BooleanM1 的实现是这样的:

这是 linq 提供程序中的一个已知错误,还是我的 UserType 有问题?任何帮助表示赞赏。

0 投票
1 回答
353 浏览

hibernate - NHibernate:多对一 IUserType

从这个问题开始:

NHibernate:IUserType 的延迟加载

鉴于我不能延迟加载属性或一对一关系,有没有办法可以将 IUserType 与多对一结合使用?像这样的东西(不起作用):

0 投票
1 回答
105 浏览

web-services - 使用来自 web 服务的值预加载 IUserType

这个帖子:

http://kennytordeur.blogspot.com/2011/04/nhibernate-in-combination-with_06.html

描述如何从数据库以外的资源(在本例中为 Web 服务)加载实体。这很好,但是如果我在一个查询中加载多个客户端,每个客户端都有不同的 MaritialState,它将不得不为每个客户端调用 web 服务。有没有办法预加载所有婚姻状态,所以它不必为每个客户来回访问网络服务?

0 投票
1 回答
329 浏览

hibernate - NHibernate 部分加载来自数据库的实体,部分加载来自 WCF

我一直在研究从 WCF 加载实体:

NHibernate:IUserType 的延迟加载

NHibernate:多对一 IUserType

使用来自 web 服务的值预加载 IUserType

我已经研究了如何从 WCF 延迟加载实体:您必须创建自己的代理来调用 WCF 并从 IUserType 返回它,但我会在某个时候写博客。

我现在的问题是,我可以以通常的方式从数据库中部分加载实体,因此填充了一些属性(存储在本地的属性),但对于其他属性,它必须调用 WCF?本地属性是可能在查询中搜索或返回的属性(不能为每个属性调用 WCF - 太慢),如果系统需要对其执行某些业务逻辑,则将调用其他属性。

问题是我认为我不能在这里使用 IUserType,因为我需要为我的集合使用 bag/set,因为我希望它们能够被急切地加载。有什么办法可以做到这一点?

编辑:

如果我可以强制 NHibernate 返回一个代理,以及如何访问该代理上的拦截器,甚至指定我自己的拦截器,那将是理想的选择?

0 投票
1 回答
930 浏览

nhibernate - IUserType 上的 NHibernate QueryOver

首先让我为这篇文章的长度道歉,虽然它主要是代码,所以我希望大家能多多包涵!

我有一个处理遗留数据库的场景,我需要使用 NHibernate 3.2 编写一个 IUserType 来获取一个 2 个字符的“状态”字段并从中返回一个布尔值。状态字段可以包含 3 个可能的值:

这是我简化的内容。

表定义:

流利的映射:

我的 IUserType 实现:

但是,这不起作用。此单元测试因计数不准确而失败。

它失败的原因是因为它生成了以下SQL:

但我需要它来生成这个:

经过一些调试后,我看到在生成查询之前调用了我的 StatusToBoolType 类中的 NullSafeSet() 方法,因此我能够通过在该方法中编写一些黑客代码来操作 cmd.CommandText 属性中的 SQL 来解决这个问题。

但这是NHibernate!!!像这样破解 sql 语句不可能是处理这个问题的正确方法吗?正确的?

因为它是一个共享的遗留数据库,所以我不能将表模式更改为 NOT NULL,否则我会这样做,并避免这种情况。

所以最后,在所有这些前奏之后,我的问题很简单,我在哪里可以告诉 NHibernate 为这个 IUserType 生成自定义 SQL 条件语句?

谢谢大家!

0 投票
1 回答
166 浏览

nhibernate - NHibernate - IUserType 用于更改类型?

我的应用程序有以下类:

现在,如果我想更新特定小部件的参数,我会说:

当我希望获取参数时,我必须做相反的事情。你可以想象这变得相当乏味。我想知道是否可能自动执行此操作?

我一直在看 IUserType 接口。我找到了一篇类似的文章。但是我的问题有点复杂,因为我的类型会根据小部件的类型而变化。

如果有人能让我知道这是否可能以及如何实现,我将不胜感激。谢谢

0 投票
1 回答
345 浏览

linq - NHibernate 3 Linq 和 IUserType

我有一张桌子:

并将其映射到域模型:

请注意,在域模型中,“模板”属性不是“字符串”类型。模板类是这样的:

“模板”是从文件系统加载的。我有一个 TemplateManager 类:

我可以使用 IUserType 来映射“模板”属性。

好的,到目前为止一切顺利。但问题是,如何在 Linq 查询中使用 Template 属性?例如:

我认为解决方案可能是编写一个类(比如 TemplatePropertyHqlGenerator)实现IHqlGeneratorForProperty. 这是NHibernate 3提供的linq查询扩展点。但是这个TemplatePropertyHqlGenerator类怎么写呢?

先谢谢了!

0 投票
1 回答
275 浏览

c# - 通过 IUserType 映射集合

我需要用一些逻辑加载一个类(调整),所以我在 Nhibernate 中实现了 IUserType。当它是一个单一的参考,它工作正常:

它的 SqlType 是字符串。
但是,我也有一个来自 Adjustment 的集合,我不知道如何映射它!

如何让我的 IUserType 实现来加载集合?
我正在使用 NH 3.3
提前致谢。

0 投票
1 回答
345 浏览

nhibernate - nHibernate:在保存之前确定属性值

我们目前正在评估 nHibernate 是否支持我们项目的要求。我们与另一个应用程序共享数据库,因此我们对模式的更改不是完全自由的。某些列填充了唯一且连续的数字(例如发票)。下一个数字由一个存储过程确定,该存储过程也实现了锁定算法,以保证这些数字是连续的。一方面,我们可以在相应的表上定义一个触发器,当提供空值或特殊值时设置列的值。这将需要更改现有的数据库定义——尽管它可能是实现这一点的最可靠方法。为了避免数据库定义的改变,我们试图在 nHibernate ORM 中解决这个问题。我们' 如果提供了一个空值,我们首先尝试实现一个调用 NullSafeSet 中的存储过程的用户类型。不幸的是,调用 NullSafeSet 时,提供的命令的连接和事务尚未设置。

我们如何用 nHibernate 解决这个问题?

提前致谢,

马库斯

0 投票
1 回答
238 浏览

hibernate - IUserType 到默认 UTC 时间戳不持久值

我构建了一个 IUserType 类来默认记录上的 UTC 创建时间戳。我以为我正确地实现了它,但它对数据库没有任何保留。有人可以告诉我我做错了什么吗?该类类似于:

映射如下所示:

数据库正在获取-infinty记录的价值(PostgreSQL)。我不知道我做错了什么;有人能指出我正确的方向吗?