gpt4 book ai didi

c# - NHibernate:一个基类,几个映射

转载 作者:太空狗 更新时间:2023-10-29 21:37:20 25 4
gpt4 key购买 nike

我对 NHibernate 比较陌生,但最近几个程序一直在使用它,我爱上了它。我遇到了这样一种情况,我需要将 4-5 个数据库中的数据聚合到一个数据库中。具体是序列号数据。每个数据库都有自己的映射文件,但最终实体都共享相同的基本结构(Serial 类)。

我知道 NHibernate 想要每个类都有一个映射,所以我最初的想法是有一个基本的序列类,然后从它继承每个不同的数据库并创建一个唯一的映射文件(继承的类将有零内容)。这对于获取所有数据和填充对象应该很有用。然后我想做的是使用基类映射将这些继承类(不确定正确的术语是什么)保存到基类表。

问题是我不知道如何强制 NHIbernate 为对象使用特定的映射文件。使用“session.save()”时,将继承类转换为基类不会执行任何操作(它提示没有映射)。

有没有办法明确指定要使用的映射?还是我缺少一些 OOP 主体来更具体地将继承类转换为基类?或者这个想法只是一个糟糕的想法。

我能找到的关于 NHibernate(第 8 章)的所有继承内容似乎并不完全适用于此函数,但我可能是错的(每个具体类的表看起来可能有用,但关于 NHibernate 如何确定要做什么,我无法完全理解它)。

最佳答案

我不知道这是否有帮助,但基本上我不会尝试这样做。

从本质上讲,我认为您可能患有“金锤子”综合症:当您拥有一把非常非常好的锤子(即 Hibernate(我同意您对此的看法;它是一个很棒的工具))时,一切看起来都像钉子。

我通常会尝试简单地拥有一个“手动转换”类,即具有构造函数的类,这些构造函数为您的个人串行类采用休眠类,并且只是将数据复制到它自己的特定格式;然后 Hibernate 可以使用自己的映射将它简单地序列化到(单个)数据库。

实际上,我认为这是一个更好的解决方案的原因是您有效地尝试做的是在您的类中进行非对称序列化;即从派生类中的一个数据库读取,写入基类中的另一个数据库。这并没有什么可怕的,真的,除了它基本上是一个单向的过程;如果您真的想从一个数据库转换到另一个数据库,只需进行转换即可。

关于c# - NHibernate:一个基类,几个映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/281247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com