Asp.net NHibernate继承了类,但不需要持久化
我有一个类Order,我使用NHibernate将它持久化到数据库中。web应用程序中还有一个文件夹,其中包含一个从Order继承的对象,出于我们的目的,我们可以将其称为CustomOrder。出于UI目的,我使用CustomOrder在Order对象上放置一些属性。这些属性实际上不必保存到数据库中 当我将CustomOrder类传递给仅接收Order对象的泛型save方法时,NHibernate抱怨: 未知实体类:CustomOrder 我不需要将自定义字段持久化到数据库中,但我希望保留这种继承结构。我是在用错误的术语思考还是在做我不应该做的事情 保存代码Asp.net NHibernate继承了类,但不需要持久化,asp.net,nhibernate,inheritance,persistence,Asp.net,Nhibernate,Inheritance,Persistence,我有一个类Order,我使用NHibernate将它持久化到数据库中。web应用程序中还有一个文件夹,其中包含一个从Order继承的对象,出于我们的目的,我们可以将其称为CustomOrder。出于UI目的,我使用CustomOrder在Order对象上放置一些属性。这些属性实际上不必保存到数据库中 当我将CustomOrder类传递给仅接收Order对象的泛型save方法时,NHibernate抱怨: 未知实体类:CustomOrder 我不需要将自定义字段持久化到数据库中,但我希望保留这种继
public object Save(Order obj, object userID) {
Order o = (Order)obj;
ISession session = NHibernateHelper.GetCurrentSession();
ITransaction tx = session.BeginTransaction();
session.Save(o);
在方法第一行的case之后,.NET仍然将其标识为CustomerOrder 已经有一段时间了,但是我相信您应该能够指定派生类应该作为基类的对象持久化到hibernate映射文件中
// get the CustomOrder from somewhere
CustomOrder customOrder;
// create an instance of Order and store it.
session.Save(customOrder.GetOrder());
class CustomOrder
{
// just one of many ways: a method on the CustomOrder to create
// instance of Order
public GetOrder()
{
return new Order()
{
property1 = this.property1,
property2 = this.property2,
property3 = this.property3
}
}
}
您可以使用反射自动执行此操作。
或者看一看。对于必须为子类提供鉴别器,是否有解决办法?+1这正是我要建议的(也是实现这一点的唯一方法)。