问题标签 [automapping]

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 回答
1276 浏览

fluent-nhibernate - 为 fluentnhibernate automapper 中的接口提供 AutoMappingOverride 的最佳方法是什么

在为应用程序寻找版本范围的数据库过滤器时,我编写了以下代码:

但是,由于覆盖不适用于接口,我正在寻找一种方法来实现它。目前,我对每个实现接口的类都使用这种(相当麻烦的)方式:

我一直在查看 IClassmap 接口等,但它们似乎没有提供访问 ApplyFilter 方法的方法,所以我在这里没有任何线索......

由于我可能不是第一个遇到这个问题的人,我很确定它应该是可能的;我只是不太确定这是如何工作的..

编辑:我已经更接近通用解决方案了:

这是我试图解决它的方式:

使用泛型类来实现对实现接口的类的更改:

和一个具体的实现:

不幸的是,我现在收到以下错误:

编辑2:我设法更进一步;我现在使用反射为每个实现接口的类调用“覆盖”:

但是,出于某种原因,我生成的 hbm 文件不包含任何“过滤器”字段......也许有人现在可以帮助我更进一步?

0 投票
1 回答
173 浏览

inheritance - 使用 FNH 的 Automap 将派生类映射为独立的类

基本上,我有一个ImageMetadata类和一个Image类,它派生自ImageMetadata. Image添加一个属性:byte[] Content,它实际上包含二进制数据。

我想要做的是将这两个类映射到一张表上,但我绝对不需要 NHibernates 的继承支持来启动。我想定制 FNH Automap 以产生类似的东西:

这是可能吗?

目前我有:

但这仍然为的映射添加了一个<joined-subclass>元素。ImageMetatada

0 投票
2 回答
496 浏览

nhibernate - 实体到多个不同父实体的 nHibernate 映射(例如地址 -> 公司,地址 -> 客户端)

有人可以帮助我以最佳方式在流利的 nHibernate 中映射以下情况吗?Address 类在 Client 和 Company 中都使用。如何在 SQL 中最有效地存储它?映射应该是什么样的?我考虑过多种选择,但对于这些情况,我对 nHibernate 的经验不够:

  1. 使用 1 个地址实体和 1 个表并使用分母列来区分客户地址和公司地址 -> 如何在 nHibernate 中实现这一点?

  2. 使用 1 个地址实体和 2 个表(ClientAddresses 和 CompanyAddresses)--> 但我只能在类 Address 的映射中定义 1 个表

  3. 使用 2 个地址实体和 2 个表 --> 不那么优雅

当我开始实现公司类并意识到它也需要多个地址时,我刚刚偶然发现了这个问题。到目前为止,我有一个 Address 和 Client 类,并且它们之间有一个一对多的映射。在数据库中,地址有一个名为 ClientId 的额外列。但是在介绍公司课程时,我被困住了......

任何帮助将不胜感激。

我目前在使用自动映射的sharparch 1.5框架中工作,我的映射文件是这样的:

下面的更多代码说明了问题:

地址

其中有下表:

表名 = 地址
字段 = AddressGuid、StreetLine1、StreetLine2、邮政编码、城市、国家

客户

公司

0 投票
1 回答
1646 浏览

c# - 帮助 Fluent NHibernate 为每个表创建一个 oracle 序列

我正在使用 Fluent NHibernate 的 (1.0 RTM) 自动映射功能来创建我的 oracle 数据库模式。我的问题是所有表都使用一个“休眠序列”,而我更喜欢(而且我的老板会要求)每个表都有一个序列生成器。

有任何想法吗?

0 投票
1 回答
569 浏览

fluent-nhibernate - 如何使 Fluent NHibernate 忽略字典属性

我试图让 Fluent NHibernate 的自动映射忽略我的一个类上的 Dictionary 属性,但 Fluent 却忽略了我。忽略其他类型的属性似乎可以正常工作,但即使在遵循文档并为 Dictionary 添加覆盖之后,调用 BuildSessionFactory 时我仍然会收到以下异常:

类型或方法有 2 个泛型参数,但提供了 1 个泛型参数。必须为每个泛型参数提供泛型参数。

我试过按属性名称覆盖:

并且还尝试使用自定义属性实现忽略,这两者都会导致 BuildSessionFactory 出现相同的异常。到目前为止,唯一使此异常消失的是完全删除 Dictionary 属性。

我的问题似乎与从未回答的问题相同(尽管我将通过说明字典是否在抽象基类上无关紧要来扩大范围;无论属性是什么类,问题总是发生在我身上开启)。这次有接盘侠吗?

0 投票
1 回答
589 浏览

nhibernate - 使用 FluentNHibernate 自动映射自定义集合

我正在改造一个非常大的应用程序以使用 NHibernate 作为它的数据访问策略。AutoMapping 一切顺利。幸运的是,在构建领域层时,我们使用了代码生成器。我现在遇到的主要问题是每个集合都隐藏在派生自 List<> 的自定义类后面。例如

我必须写什么样的公约才能完成这项工作?

0 投票
2 回答
322 浏览

nhibernate - Fluent Nhibernate Mapping 两个数据库表上的单个类

我在映射时遇到问题。

我的数据库中有两个表,如下所示:Employee 和 EmployeeManagers

员工

EmployeeId int 名称 nvarchar

员工经理

EmployeeIdFk int ManagerIdFk int

所以员工可以有0个或多个经理。经理本身也是员工。

我有以下类来代表员工和经理

我没有任何类来代表经理,因为我认为没有必要,因为经理本身就是员工。

我正在使用自动映射,我只是不知道如何将这个类映射到这两个表。我正在实现 IAutoMappingOverride 以覆盖 Employee 的自动映射,但我不确定在其中做什么。

我还想确保一个员工不能被分配两次同一个经理。这是我可以在我的应用程序中验证的内容,但我想对 EmployeeManager 表(例如复合键)施加约束,因此不能多次将同一经理分配给员工。

有人可以帮我解决这个问题吗?

等待纳比尔

0 投票
1 回答
1836 浏览

fluent-nhibernate - FluentNHibernate:映射一个可为空的 int 版本属性

如何使用约定(例如 IClassConvention、AutomapperConfiguration)映射版本属性?

0 投票
3 回答
538 浏览

fluent-nhibernate - 使用 fluent-nhibernate 是否可以在实体内自动映射值对象?

我正在使用 Sharp Architecture,并且在许多情况下,值对象都在实体中使用。这是一个明显的简单示例:

这当然会抛出:

因为 AutoPersistenceModelGenerator 只包含类型为 IEntityWithTypedId<> 的类。目前尚不清楚 Sharp Architecture 期望如何实现这种常见条件。这是否必须通过无数次覆盖来处理?

0 投票
2 回答
998 浏览

nhibernate - S#arp Architecture Repository.DbContext.CommitTransaction() 异常行为

我正面临存储库和事务的异常行为,这让我很生气。

我有两个简单的 POCO 类 Action 和 Version 如下。Action->Version 是一对多的关系。

现在我有一个代码段如下:

在上面的代码中,我只是创建了 Action 和 Version 存储库。首先,我使用 Action Repository 持久化一个 Action 对象。然后我使用 Version repository 开始一个事务,创建一个新版本,使用 Action 设置引用,并在没有实际调用 Version Repository 的情况下提交事务。

结果有点奇怪。即使我没有在版本存储库上调用 SaveOrUpdate 方法,版本对象也会被保留。如果我注释掉行 act1.AddVersion( v1 ); 在事务中,则版本不会被持久化。

经过一番努力,我直接使用 NHibernate 测试了相同的场景,而不是使用相同的流畅映射/配置 (AutoPersistenceModelGenerator.Generate()) 使用 Sharp Architecture 存储库。结果和预期的一样。版本对象不会被持久化。这是代码

CreateSessionFactory() 方法如下。没什么复杂的

现在,如果有人可以请让我知道我为什么会有这种行为。它让我很生气。

只是为了让您知道我也没有覆盖 Action 和 Version 的映射。

等待纳比尔