gpt4 book ai didi

.net - 单独项目中的 nHibernate 域模型和映射文件

转载 作者:行者123 更新时间:2023-12-05 00:41:55 25 4
gpt4 key购买 nike

有没有办法将域对象和映射文件分成两个单独的项目?我想创建一个名为 MyCompany.MyProduct.Core 的项目,其中包含我的域模型,以及另一个名为 MyCompany.MYProduct.Data.Oracle 的项目,其中包含我的 Oracle 数据映射。但是,当我尝试对此进行单元测试时,我收到以下错误消息:

Named query 'GetClients' not found.



这是我的映射文件:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="MyCompany.MyProduct.Core"
namespace="MyCompany.MyProduct.Core"
>
<class name="MyCompany.MyProduct.Core.Client" table="MY_CLIENT" lazy="false">
<id name="ClientId" column="ClientId"></id>
<property name="ClientName" column="ClientName" />
<loader query-ref="GetClients"/>
</class>
<sql-query name="GetClients" callable="true">
<return class="Client" />
call procedure MyPackage.GetClients(:int_SummitGroupId)
</sql-query>
</hibernate-mapping>

这是我的单元测试:
        try
{
var cfg = new Configuration();
cfg.Configure();
cfg.AddAssembly( typeof( Client ).Assembly );

ISessionFactory sessionFactory = cfg.BuildSessionFactory();
IStatelessSession session = sessionFactory.OpenStatelessSession();

IQuery query = session.GetNamedQuery( "GetClients" );
query.SetParameter( "int_SummitGroupId", 3173 );
IList<Client> clients = query.List<Client>();

Assert.AreNotEqual( 0, clients.Count );
}
catch( Exception ex )
{
throw ex;
}

我想我可能没有正确引用程序集,因为如果我将域模型对象放在 MyComapny.MyProduct.Data.Oracle 类中,它就可以工作。只有当我分成两个项目时,我才会遇到这个问题。

最佳答案

是的,这是可能的。如果映射在程序集“MyCompany.MYProduct.Data.Oracle”上,那么您必须将该程序集传递给 cfg.AddAssembly()。您正在使用程序集“MyCompany.MyProduct.Core”
cfg.AddAssembly("MyCompany.MYProduct.Data.Oracle");

关于.net - 单独项目中的 nHibernate 域模型和映射文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2622229/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com