问题标签 [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 投票
2 回答
1435 浏览

c# - 如何使用 Fluent NHibernate 和 IUserType 将两列映射到一个成员?

我有一个 IUserType ,它将两列映射为一个类型,如下所示:

我无法使用 Fluent NHibernate 指定两个列名。我试过这个:

但第二列名称被忽略。如何使用 Fluent NHibernate 指定两个列名?

0 投票
1 回答
2194 浏览

c# - NHibernate 代码映射和 IUsertype 不起作用

我正在尝试通过代码获取与 NHibernate (v3.3) 映射一起使用的自定义类型。我尝试在此处遵循此示例,但没有运气。我试图实现的自定义类型是一种修剪来自数据库的字符串的类型。

我收到以下异常:

PropertyAccessException: Invalid Cast(检查您的映射是否有属性类型不匹配)。{“无法将“System.String”类型的对象转换为“ConsoleApplication1.TrimmedString”类型。”}

这是我的全部尝试(要点)。

这是我的映射:

不确定我是否必须在 NHibernate 配置对象中做任何特别的事情,但我已将其包含在上面链接的 Gist 中。

0 投票
2 回答
1442 浏览

c# - 如何将原生 SQL 查询结果映射到 NHibernate 中的自定义值类型列表?

我有一个名为的值类型FiscalYear,它本质上是一个整数的包装器。我也NHibernate.UserTypes.IUserType为它实现了。现在我可以将类型的属性FiscalYear直接映射到 SQL 类型,NHibernate 会自动转换它们。

一切正常。但现在我想执行原生 SQL 查询以从数据库中获取财政年度列表。这是当前代码:

可行,但我的问题是:由于我已经实现了IUserTypefor FiscalYear,是否可以将此代码简化为如下所示:

不幸的是,这不起作用。使用Transformers.AliasToBean也无济于事,因为FiscalYear它是一种值类型而不是实体。

我认为这确实应该很容易做到,但到目前为止我的所有尝试都失败了。我想我只是错过了什么?

0 投票
2 回答
148 浏览

javascript - 允许用户使用 JavaScript 键入段落

有没有办法创建一个允许用户输入段落的框?我希望保存用户的输入。

0 投票
1 回答
904 浏览

c# - 带有 IUserType 的 NHibernate QueryOver 失败

我有一个带有 NHibernate 的自定义用户类型,并且自定义类型可以很好地保存和更新。QueryOver但是,在此自定义用户类型上使用时会发生错误。我收到错误消息:could not resolve property: SpecialType.Code of: NHibernateComplexIUserTypeExample.Person

我知道我可以使用 Component() 而不是 Map() 将 SpecialType 类与自定义类型进行映射,但是在此示例之外还有其他一些考虑因素会使其不合适。如果可能的话,我想解决这个问题,同时将其保留为 IUserType。

这是我可能导致此错误的示例代码。

错误发生在Program.csQueryOver<>.

个人.cs

人物地图.cs

程序.cs

SpecialTypeUserType.cs

特殊类型.cs

数据库表定义

0 投票
0 回答
375 浏览

c# - Fluent NHibernate - 使用自定义映射映射枚举列表

在我们的解决方案中,当映射枚举时,不是简单地保存整数或文本描述,而是使用自定义IUserType来根据数据库表解析文本描述并检索适当的 ID。(这些值在应用程序启动时缓存以加快速度)

这对于单个 Enum 属性非常有效。映射代码(使用映射覆盖)看起来像这样......

POCO:

映射覆盖:

当我有要映射的枚举列表时,就会出现我的问题。例如...

POCO:

我的研究(此处此处)表明映射应类似于以下内容:

...但我无法弄清楚如何CustomType在该MAP YOUR CUSTOM TYPE HERE部分中连接。

另一方面,这个 SO 线程建议CustomType不适用于集合 - 但是该特定评论的日期为 2009 年,所以我希望从那时起有所改变。

这种类型的映射是否可能(如果可以,我错过了什么)还是我需要开始寻找最合适的解决方法?

干杯。

0 投票
0 回答
60 浏览

c# - NHibernate:用户类型将文件保存在磁盘而不是数据库上

目前我们正在数据库中保存文件(或者更好:它们的内容作为流)。

总而言之,到目前为止,这一切都运作良好,除非存在一些问题:例如,您无法保存大于 2gb 的文件。

所以我们现在正在寻找更好的解决方案。如果您不将文件保存在数据库中,则必须将它们保存在磁盘上。为了不重新实现整个持久化过程,我们考虑实现一个自定义用户类型 (IUserType),它将文件保存在磁盘上并将文件名存储在数据库中。

NullSafeSet 会将文件保存在磁盘上并将位置存储在数据库中,而 NullSafeGet 将(懒惰地)返回从数据库中的文件名创建的流。

我们在该解决方案中发现了一些优点,但也发现了一些缺点:

优点: - 除了实现 UserType 和最小限度地更改映射文件 - 将文件保存在磁盘上 - ... 没有更改代码 - ...

缺点: - 在哪里处理由 UserType 创建的流 - 保存文件的固定文件夹(到目前为止对我们来说没有问题) - 可能会减慢 nhibernate - ...

所以现在我们想知道将文件保存在磁盘上的 UserType 是否是一个疯狂的想法,或者是否值得研究以解决缺点?