Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NHibernate基和派生类映射_C#_Nhibernate_Class_Mapping_Base - Fatal编程技术网

C# NHibernate基和派生类映射

C# NHibernate基和派生类映射,c#,nhibernate,class,mapping,base,C#,Nhibernate,Class,Mapping,Base,情况: 我有一个类MyClass和它的“轻量级”版本MyClassLite,所以我有 public class MyClass : MyClassLite 我还使用hbm文件映射我的类(它们被映射到同一个表)。 问题是,当我试图获取MyClassLite实体列表时,我不仅得到MyClassLite实体,而且还得到了MyClass实体列表。如何消除这种情况?如果在映射或查询中为列表配置急切加载,则将获得MyClass实现 在条件查询中: Criteria.SetFetchmode("MyClas

情况: 我有一个类MyClass和它的“轻量级”版本MyClassLite,所以我有

public class MyClass : MyClassLite
我还使用hbm文件映射我的类(它们被映射到同一个表)。
问题是,当我试图获取MyClassLite实体列表时,我不仅得到MyClassLite实体,而且还得到了MyClass实体列表。如何消除这种情况?

如果在映射或查询中为列表配置急切加载,则将获得MyClass实现

在条件查询中:

Criteria.SetFetchmode("MyClassListProperty", Fetchmode.Eager)
在hql查询中:

left join fetch MyClassListProperty
在映射文件中:

<set [...] lazy="false"> ...
。。。

这个ClassLite到底是什么?为什么您的类继承自ClassLite?这里真的有“是-是”关系吗

ClassLite存在的原因是什么?例如,当您必须显示“类”实例的概览时,是否使用该类?
然后,如果是这种情况,您应该查看DTO或“视图”、投影和别名ToBeanEntityResultTransformer。

这不符合逻辑吗?MyClass是MyClassLite的子类,所以任何MyClass实例也是MyClassLite的instance。如果您想摆脱继承层次结构,请更改它们。例如,引入一个基类,并使MyClass和MyClassLite都成为它的子类。这看起来是合乎逻辑的,但我想知道在hbm文件中是否有任何选项可以阻止检索派生实例。一定有东西..你是如何查询这个表的MyClassLite列表的?