NHibernate 验证器和架构导出问题

发布于 2024-09-19 18:09:55 字数 205 浏览 3 评论 0原文

我正在学习使用 NHibernate 验证器及其 Fluent API (Loquacious)。

我注意到我无法将整数属性或可为空的 int 属性(int?)设置为不可为空。嗯,为什么不呢?

在数据库中,整数列可以具有空值。更糟糕的是,当我使用 SchemaExport 生成 DDL 时,整数列不会获取该非空性(除非我在 Nhibernate 映射中表达它)。

I'm learning to use NHibernate validator and it's Fluent API (Loquacious).

I have noticed is that I can't set an integer property or nullable int property (int?) to be not nullable. Well, why not?

In a database, an integer column can have null values. Even worse, when I generate DDL using SchemaExport, the integer column wont be picking up that non-nullabity (unless I express it in the Nhibernate mappings).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

遥远的她 2024-09-26 18:09:55

如果您使用 ValidatorDef<> 指定验证器,架构导出会检测到这一点,并且您将获得适当的 SQL 定义,例如

public class InvoiceValidationDef : ValidationDef<Invoice>
{
   public InvoiceValidationDef()
   {
       ...
       Define(x => x.Description).NotNullable().And.MaxLength(255);
       ...
   }
}

create table Invoices (
   ...
   Description NVARCHAR2(255) not null,
   ...
)

If you specify the validators using ValidatorDef<>, this is detected by the the schema export, and you'll get the appropriate SQL definitions, example:

public class InvoiceValidationDef : ValidationDef<Invoice>
{
   public InvoiceValidationDef()
   {
       ...
       Define(x => x.Description).NotNullable().And.MaxLength(255);
       ...
   }
}

Results in

create table Invoices (
   ...
   Description NVARCHAR2(255) not null,
   ...
)
转瞬即逝 2024-09-26 18:09:55

你已经给出答案了。架构导出不会扫描验证器。你必须使用映射。

You gave the answer already. The validator is not scanned by schema export. You have to use the mapping.

以酷 2024-09-26 18:09:55

NHibernate Validator 位于 NHibernate 之上。它用于根据 NHibernate 映射和自定义规则验证实体。对于配置字段属性,例如它们是否可为空,这是在 NHibernate 映射中完成的,因为它不仅影响完成的验证,还影响生成的 SQL 语句。

NHibernate Validator sits on top of NHibernate. It is used to validate entities against NHibernate mappings and custom rules. For configuring field properties, such as whether they are nullable, this is done in the NHibernate mappings as it affects not only the validations done, but also the generated SQL statements.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文