nHibernate:将实体名称与 QueryOver 和 CreateCriteria 一起使用

发布于 2024-12-05 15:20:38 字数 605 浏览 6 评论 0原文

我有两个 hbm.xml 映射文件。除了类表和类实体名称属性之外,它们是相同的。他们应该填充同一个实体。 它们的实体名称分别为 Alpha 和 Beta,表分别为 PersonAlpha 和 PersonBeta。

我尝试使用 QueryOver 和 Criteria 来填充实体 Person:

var person = session.QueryOver<Person>("Alpha").Where(p => p.Firstname == "Donald").SingleOrDefault<Person>();
var person2 = session.CreateCriteria("Beta").Add(Restrictions.Eq("Firstname", "Donald")).UniqueResult<Person>();

正如我对实体名称的引用一样,我认为 nHibernate 会知道要使用哪个映射文件,但根据 Profiler,上述每个语句都会针对 PersonAlpha 和 PersonBeta 表生成 SQL 。这是为什么呢?

我使用的是 3.2.0 2001 og nHibernate 版本。

谢谢!

I have two hbm.xml mappingfiles. They are identical except for the class table and class entity-name properties. They are supposed to populate the same Entity.
They have entity-name= Alpha and Beta, table= PersonAlpha and PersonBeta respectively.

I have tryed using both QueryOver and Criteria to populate the entity Person:

var person = session.QueryOver<Person>("Alpha").Where(p => p.Firstname == "Donald").SingleOrDefault<Person>();
var person2 = session.CreateCriteria("Beta").Add(Restrictions.Eq("Firstname", "Donald")).UniqueResult<Person>();

As Im ref to the entity-name I thought nHibernate would know which mappingfile to use, but according to Profiler each of the above statements generete SQLs against both the PersonAlpha and PersonBeta tables. Why is this?

Im using version 3.2.0 2001 og nHibernate.

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文