Jos*_*osh 5 asp.net nhibernate inheritance persistence
我有一个类Order,我使用NHibernate将其保存到数据库中.Web应用程序中有一个文件夹,其中包含一个继承自Order的对象,出于我们的目的,我们可以将其称为CustomOrder.我使用CustomOrder将一些属性放在Order对象上以用于UI.实际上不必将属性保存到数据库中.
当我将CustomOrder类传递给只接受Order对象的泛型保存方法时,NHibernate抱怨:
未知的实体类:CustomOrder.
我不需要将自定义字段持久化到数据库,但我想保留这个继承结构.我是在考虑错误的术语还是做一些我不应该做的事情?
保存代码
public object Save(Order obj, object userID) {
Order o = (Order)obj;
ISession session = NHibernateHelper.GetCurrentSession();
ITransaction tx = session.BeginTransaction();
session.Save(o);
Run Code Online (Sandbox Code Playgroud)
在方法的第一行中的情况之后,.NET仍然将其标识为CustomerOrder.
无论您如何实现它:您都需要创建一个新的 Order 实例。
// 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
}
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用反射来自动执行此操作。或者看看MemberwiseClone()。
| 归档时间: |
|
| 查看次数: |
951 次 |
| 最近记录: |