使用NHibernate在两组表中保存相同的类结构

使用NHibernate在两组表中保存相同的类结构,nhibernate,Nhibernate,我有一个类似模拟班继承人的场景 顺序 订单线 产品 顾客 订单 这会创建一些表,如 顾客 产品 CustomerOrderNotes CustomerId,OrderId 订单客户ID 订单行订单ID,产品ID 我已经把它映射到了NHibernate,一切正常 所以现在我想创建这个对象的in-edit版本,并将其保存到数据库中 我正在使用asp.net,希望将编辑中的更改保存到单独的行中,然后仅在按下“发布”以将更改提交到活动行时进行保存。我计划从编辑数据复制到实时数据 使用相同的对象模型是否可

我有一个类似模拟班继承人的场景

顺序 订单线 产品 顾客 订单 这会创建一些表,如

顾客 产品 CustomerOrderNotes CustomerId,OrderId 订单客户ID 订单行订单ID,产品ID 我已经把它映射到了NHibernate,一切正常

所以现在我想创建这个对象的in-edit版本,并将其保存到数据库中

我正在使用asp.net,希望将编辑中的更改保存到单独的行中,然后仅在按下“发布”以将更改提交到活动行时进行保存。我计划从编辑数据复制到实时数据

使用相同的对象模型是否可以将编辑中的数据存储在单独的表中

若并没有,我可以创建一个从Order派生的EditOrder类,但EditOrder仍然指向OrderLine和Customer。因此,来自OrderLine和Customer的任何更改都将保存到活动行中。 对于NHibernate,我似乎需要创建一个单独的继承人

编辑顺序 编辑命令行 编辑产品 编辑客户 编辑客户记录 如果不创建一个通用的庞然大物,让你定义在这个继承人中使用的每一个类,我不知道该走哪条路

我真的想用一级继承权,而不是维持两级继承权

另一个选项是将in edit的对象继承人序列化到用户类中。但是,如果其中一个类发生更改,我将不得不清除数据,而不是运行数据库迁移脚本

另一种解决方案是使用具有不同映射文件的另一个数据库/会话工厂


处理这种情况的推荐方法是什么?

这两组表用于支持两种不同的已发布/等待批准状态等

如果可能的话,我建议在模型中显式显示此状态,并将所有内容保存在同一个表中


然后,已发布对象的客户端将不得不以某种方式排除未发布的对象。

是的,这是一个选项,但正如您所说,每当您对已发布数据进行选择时,必须按此进行筛选。此外,每个对象都必须知道它的状态,除非所有查询都链接回父实体,父实体知道它是否已发布或只是编辑数据。对于编辑来说,情况就是这样,但如果我只是想吸引客户或注意,我不一定要加入订单。目前,我们将尝试对编辑数据进行二进制序列化。虽然这有它自己的问题。