问题标签 [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 回答
2141 浏览

nhibernate - 如何在一个实体中使用 Fluent NHibernate Automapping 和多个相同类型的列表?

似乎 NHibernate 不能在一个实体中自动映射多个给定类型的 IList。

考虑以下两个实体(基于 Fluent NHibernate 源代码中包含的 Examples.FirstProject 示例代码)。

这似乎是一个完全有效的对象模型——每家商店都有几名员工和几名经理员工。

但是当我自动映射时,员工和经理列表存储在员工表中,都具有相同的外键。

最终结果是,当从数据库中读回数据时,Staff 和 Managers 列表都填充了表中的每一行。

对我来说,这看起来像是 Automapping 中的一个错误,但我对任何形式的 NHibernate 都很陌生,还不完全知道它的局限性。

无论如何,我怎样才能让 NHibernate 将这两个列表视为不同的?

如果可能的话,我会很感激一个自动映射代码片段,它直接解决了我提供的示例代码(例如“将这个确切的覆盖放在你的 CreateSessionFactory 的 .Mappings 部分”)。

这是因为我对 Automapping 只是有点熟悉,对旧的做事方式一点也不熟悉,这意味着我还不能很好地“填补空白”。

但是,如果您只有时间为我指出正确的方向,那也会有所帮助。

这是我的 CreateSessionFactory 代码,提供一些上下文:

0 投票
4 回答
3860 浏览

c# - 用于双向映射的简单约定 Automapper(到/从 ViewModel 的实体)

更新:这些东西已经演变成一个不错的项目,请参见http://valueinjecter.codeplex.com


看看这个,我刚刚写了一个简单的自动映射器,它从一个对象的具有相同名称和类型的属性中获取值并将其放入另一个对象中,您可以为您可能需要的每种类型添加异常(ifs、switch)

所以告诉我你怎么看?

我这样做了,所以我可以做这样的事情:

这就是它的开始:

我在我的 Inputs/Dto/ViewModels 中为 DropDowns 使用“对象”类型,因为我向 html 发送了 IEnumerable<SelectListItem> 并且我收到了返回的选定键的字符串数组

更新: 真正的用法:
构建方法(输入= Dto):

在控制器中:

真正的 Map 方法

0 投票
2 回答
5366 浏览

c# - Fluent NHibernate 在外键引用上强制执行不可为空

只是用一些 Fluent NHibernate AutoMap 约定弄湿了我的脚,然后遇到了一些我无法弄清楚的事情。我假设我只是没有在正确的地方寻找......基本上试图在一对多关系的“多”方面强制执行 NOT-NULL 。看来,使用自动映射,它总是使数据库中的父属性 Id 可以为空。

我在 StackOverFlow 上进行了一些搜索,发现了类似的问题,但没有与 AutoMapping 和 Conventions 相关的内容(除非我错过了)。

快速示例...

我以为我可以创建一个像...这样的约定

但似乎 IOneToOnInstance 没有 Nullable() 方法。如果我为 Job 创建一个 Map 文件,我可以做到这一点,但尽量避免使用任何 Map 文件并坚持使用自动映射。

我在 Fluent 组列表中遇到了这个链接,描述了类似的内容。

它描述了这样的事情......

但这引发了以下问题...... 1)我如何确定 IProperty 是一个工作(或任何链接回父级的子属性)

2)它在该页面上提到使用它会覆盖我的手动覆盖,例如。如果一个非常具体的属性链接需要为 NULL。这将是一个问题(如果它仍然是一个问题,但如果不先弄清楚#1就无法测试)

对此有什么想法吗?我只是错过了什么吗?



更新 1

还是不行。即使以下仍然没有在数据库模式中强制执行 Not-Nullable ...

不过,它适用于所有其他领域……
/耸肩

有任何想法吗?



更新 2

虽然这不是我正在寻找的答案,但我确实找到了解决方法......我正在使用 NHibernate Validator 程序集,并且在该程序集中有一个 [NotNull] 属性。如果我用 Validator 属性修饰我的类,并在创建模式之前将 ValidationEngine 关联到 NHibernate,它会将 FK 数据库列标记为 Not-Nullable。

如果有人需要 NHibernate + ValidationEngine 初始化的完整代码,请告诉我。仍在寻找一种使用纯映射约定路线的方法,但如果有人有任何信息......

谢谢!

0 投票
1 回答
507 浏览

asp.net-mvc - S#arp Architecture 多对多映射覆盖不起作用

我已经尝试了几乎所有方法来让 M:M 映射在 S#arp 架构中工作。不幸的是,Northwind 示例项目没有 M:M 覆盖。

在转换为 S#arp 及其选择 Fluent NHibernate 的自动映射之前,我的项目中一切正常。我喜欢自动映射,很好,但是覆盖似乎没有注册。

这一切似乎都在内存和测试中工作,但是当将数据提交到数据库时,没有任何东西被插入到我的 M:M 参考表中。

如果我们以一个简单的类别为例,可以有很多产品,而一个产品可以在很多类别中,我们将有一个名为 CategoryProduct 的表(我不喜欢复数形式),其中包含 Category_id 和 Product_id 列。

我的自动持久性模型生成如下:

Category 的映射覆盖如下所示:

并且产品具有这样的映射覆盖:

我尝试了许多构造 M:M 映射的组合,但没有任何效果。

这篇文章建议使用更新 FHN 重新编译 S#arp,我尝试了这个,但是最新的 FHN 代码与看起来 S#arp 使用的代码大不相同。修复了所有破坏性冲突,但它仍然不起作用。

希望其他人已经遇到并解决了 S#arp 的 M:M 自动映射覆盖问题。

0 投票
1 回答
418 浏览

c# - 什么是值对象列表的流畅 NHibernate 约定

我试图弄清楚值对象列表的约定是什么,在这种情况下是一个 IList。这是我的域模型的代码片段:

我的自动映射设置为:

我想将.Table()and.KeyColumn()覆盖成一个约定,这样我就不必在我使用的任何地方都这样做IList<string>。我以为我可以创建一个IHasManyConvention,但它似乎不会影响这个映射。我在我的自定义HasManyConvention类中设置了一个断点,但它不会中断该Options属性。谁能告诉我应该使用什么约定来自动化这个覆盖?

0 投票
5 回答
13034 浏览

c# - 从现有 DB 和 Fluent NHibernate 自动映射生成 C# 实体

我正在使用一个使用一些非常丑陋的约定的现有数据库。我想使用 NHibernate,我想我可以使用 Fluent NHibernate 的自动映射约定来修复所有这些丑陋的数据库约定。我想避免手动编写所有实体类。(这是 LINQ to SQL 和 SubSonic 吸引人的地方)

是否可以根据我在 Fluent NHibernate 中指定的数据库模式和映射生成我的 C# 实体?

旁白:你知道 NHibernate 的设计师吗?

0 投票
1 回答
100 浏览

c# - 在 Fluent NHibernate 中将父母作为孩子的财产有什么缺点?

我正在使用 Fluent NHibernate/Automapping 并且我有一个具有集合的类,并且该集合中的每个项目都有自己的集合。

这与这个问题有关,该问题从未得到回答,但已通过 OP 将父对象保留在子对象上并将其标记为非空来解决。

这是在 Fluent NHibernate 中将外键设置为非空的唯一方法吗?可能是一个愚蠢的问题,但我没有理由知道父对象是什么,所以拥有这些属性是没有用的。如果这是唯一的方法,这样做有什么缺点吗?如果我的代码可以只处理关系,那是否值得?

0 投票
3 回答
5497 浏览

nhibernate - List 的 Fluent NHIbernate 自动映射?

Fluent NHibernate 不喜欢这样,抛出一个错误:

{“关联引用未映射的类:System.String”}

好的,我明白为什么这会导致问题 - 但最好的解决方案是什么?

我真的不希望它在单个字段中存储分隔的字符串列表,如果我的列表包含许多字符串,这会变得很难看。

出于显而易见的原因,我也真的不想要一个表格“字符串”。

我想我可以通过将我的类包装List<string>在一个类中来解决这个问题,但这感觉有点重量级。我开始认为它是最好的解决方案。

让 Fluent NHibernate 处理这个问题的最佳方法是什么?

我完全希望这些值存储在另一个表中。我想也许我可能已经能够设置一些自动映射约定来指示 NHibernate '如果你看到一个class X包含List<*some primitive type*>,然后继续并自动创建一个映射到这个集合的引用表。

将每个集合都包装在一个类中感觉有点沉重。但是,如果这是最好的解决方案,那就这样吧。

0 投票
3 回答
3928 浏览

configuration - 如何使用 Fluent NHibernate 自动映射来映射字典?

我有一个像这样的实体:

每次我尝试使用以下代码进行自动映射时:

我收到以下错误:

有人可以告诉我我做错了什么吗?此外,这只是一个简单的例子。我的字典比这本要多得多。

0 投票
2 回答
1257 浏览

fluent-nhibernate - 是否可以使用 Fluent NHibernate 约定将所有 ICollections 映射为集合?

是否可以使用 Fluent NHibernate 约定将所有 ICollections 映射为集合?我有一个像这样的实体:

使用流利的映射,此属性将被映射为HasMany(x => x.Animals).AsSet(),但我将如何使用我想与自动映射器一起使用的约定来做到这一点?

默认情况下,我应该添加它,ICollections将其持久化为ILists,当它尝试将其转换为 时,我会得到一个转换HashSet异常IList