asp.net – NHibernate继承类但不需要持久化
发布时间:2020-12-16 03:18:13 所属栏目:asp.Net 来源:网络整理
导读:我有一个类Order,我使用NHibernate将其保存到数据库中. Web应用程序中有一个文件夹,其中包含一个继承自Order的对象,出于我们的目的,我们可以将其称为CustomOrder.我使用CustomOrder将一些属性放在Order对象上以用于UI.实际上不必将属性保存到数据库中. 当我
我有一个类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); 在方法的第一行中的情况之后,.NET仍然将其标识为CustomerOrder. 解决方法
>您无法在.NET中更改实例的类型.没有任何铸造或任何使它成为可能的东西.
>从数据库加载实例时,NHibernate想要创建您存储的相同类型.这就是为什么它想要CustomOrder的映射. 如何实现它:您需要创建一个新的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 } } } 您可以使用Reflection自动执行此操作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
推荐文章
站长推荐
- 实体框架 – ASP.NET OData – 使用带数据传输对
- asp.net – 未捕获错误:在初始化之前无法在弹出
- asp.net-mvc-4 – jQuery DatePicker MVC4 Edito
- Asp.net mvc 知多少(八)
- asp.net-mvc – ASP.NET中的Dapper,ODATA和IQuer
- asp.net – 谁应该负责分页控制器/ domail服务/存
- ASP .NET C#从Web路径中的文件中获取所有文本
- asp.net-core-mvc – 如何创建从HttpContext.Tra
- asp.net-mvc – 如何在ASP.NET MVC应用程序中实现
- asp.net-core – 哪些.NET框架版本支持.NET Fram
热点阅读