当前位置:编程学习 > C#/ASP.NET >>

一个关于mappingexception的问题

小弟在此求各位大虾帮忙指点
在用nibernate时
调试出现如下错误:

“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------

No persister for: SK.DTO.Domain.Customer 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: NHibernate.MappingException: No persister for: SK.DTO.Domain.Customer

源错误: 


行 32:         {
行 33:             //Db.SessionFactory.EvictQueries("Customer");
行 34:             Customer p = Db.Session.Get(typeof(Customer),dto.Id) as Customer;
行 35:             p.User = dto.User;
行 36:             p.Email = dto.Email;
 

源文件: F:\SK\SK\SK.DAL.Service\CustomerSrv.cs    行: 34 

堆栈跟踪: 


[MappingException: No persister for: SK.DTO.Domain.Customer]
   NHibernate.Impl.SessionFactoryImpl.GetEntityPersister(String entityName, Boolean throwIfNotFound) +121
   NHibernate.Impl.SessionFactoryImpl.GetEntityPersister(String entityName) +7
   NHibernate.Event.Default.DefaultLoadEventListener.OnLoad(LoadEvent event, LoadType loadType) +114
   NHibernate.Impl.SessionImpl.FireLoad(LoadEvent event, LoadType loadType) +51
   NHibernate.Impl.SessionImpl.Get(String entityName, Object id) +99
   NHibernate.Impl.SessionImpl.Get(Type entityClass, Object id) +26
   SK.DAL.Service.CustomerSrv.Update(CustomerDTO dto) in F:\SK\SK\SK.DAL.Service\CustomerSrv.cs:34
   SK.BLL.BLL.BLLCustomer.Update(CustomerDTO dto) in F:\SK\SK\SK.BLL.BLL\BLLCustomer.cs:27
   SK._Default.XG_Button_Click(Object sender, EventArgs e) in F:\SK\SK\SK\Default.aspx.cs:68
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +105
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +107
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5102

 


--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:2.0.50727.42; ASP.NET 版本:2.0.50727.42  --------------------编程问答-------------------- nhibernate配置如下:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  <session-factory>
    <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
    <property name="connection.connection_string_name">Connection String</property>
    <property name="connection.connection_string">Server=localhost;initial catalog=lhy;Integrated Security=SSPI</property>
    <property name="adonet.batch_size">10</property>
    <property name="show_sql">true</property>
    <property name="dialect">NHibernate.Dialect.MsSql2000Dialect</property>
    <property name="use_outer_join">true</property>
    <property name="command_timeout">300</property>
    <property name="query.substitutions">true 1,false 0,yes 'Y',no 'N'</property>

    <mapping assembly="SK.DTO.Domain" />
  </session-factory>
</hibernate-configuration> --------------------编程问答-------------------- 错误的语句如下:

 public void Update(CustomerDTO dto)
        {
            //Db.SessionFactory.EvictQueries("Customer");
            Customer p = Db.Session.Get(typeof(Customer),dto.Id) as Customer;
            p.User = dto.User;
            p.Email = dto.Email;
            Db.TransUpdate(p);
        } --------------------编程问答-------------------- DTO.Domain.xml语句如下:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="SK.DTO.Domain" assembly="SK.DTO.Domain">
  <class name="Customer" table="customers" proxy="Customer">
    <cache usage="read-write" />
    <id name="Id" column="customer_id" type="String" not-null="true" length="20" >
    <generator class="assigned"/>
    </id>
    <property name="User"  column="customer_user"  type="String" not-null="true" length="20"/>
    <property name="Email" column="customer_email"  type="String" not-null="true" length="20"/>
  </class>
</hibernate-mapping>

DTO.Domain.cs语句如下:
using System;
using System.Collections.Generic;
using System.Text;

namespace SK.DTO.Domain
{
    [Serializable]
    public class Customer
    {
        protected string _id;
        protected string _user;
        protected string _email;
        public virtual string Id
        {
            get { return _id; }
            set { _id = value; }
        }
        public virtual string User
        {
            get { return _user; }
            set { _user = value; }
        }
        public virtual string Email
        {
            get { return _email; }
            set { _email = value; }
        }
        public Customer()
        {
           _id = String.Empty;
           _user = String.Empty;
           _email = String.Empty;
        }
    }
}

补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,