2009-08-16 58 views
1

我使用nHibernate和流利。nhibernate說'映射異常未處理'沒有persister爲:MyNH.Domain.User

我創建了一個User.cs:

public class User 
    { 

     public virtual int Id { get; set; } 
     public virtual string Username { get; set; } 
     public virtual string Password { get; set; } 
     public virtual string Email { get; set; } 
     public virtual DateTime DateCreated { get; set; } 
     public virtual DateTime DateModified { get; set; } 

    } 

然後在我的mappinds文件夾:

public class UserMapping : ClassMap<User> 
    { 

     public UserMapping() 
     { 
      WithTable("ay_users"); 

      Not.LazyLoad(); 
      Id(x => x.Id).GeneratedBy.Identity(); 
      Map(x => x.Username).Not.Nullable().WithLengthOf(256); 
      Map(x => x.Password).Not.Nullable().WithLengthOf(256); 
      Map(x => x.Email).Not.Nullable().WithLengthOf(100); 
      Map(x => x.DateCreated).Not.Nullable(); 
      Map(x => x.DateModified).Not.Nullable(); 
     } 

    } 

使用了NHibernate的博客存儲庫模式:

public class UserRepository : Repository<User> 
    { 

    } 




public class Repository<T> : IRepository<T> 
    { 

     public ISession Session 
     { 
      get 
      { 
       return SessionProvider.GetSession(); 
      } 
     } 


     public T GetById(int id) 
     { 
      return Session.Get<T>(id); 
     } 

     public ICollection<T> FindAll() 
     { 
      return Session.CreateCriteria(typeof(T)).List<T>(); 
     } 

     public void Add(T product) 
     { 
      Session.Save(product); 
     } 

     public void Remove(T product) 
     { 
      Session.Delete(product); 
     } 
    } 



    public interface IRepository<T> 
    { 
     T GetById(int id); 
     ICollection<T> FindAll(); 
     void Add(T entity); 
     void Remove(T entity); 
    } 



public class SessionProvider 
    { 
     private static Configuration configuration; 
     private static ISessionFactory sessionFactory; 

     public static Configuration Configuration 
     { 
      get 
      { 
       if (configuration == null) 
       { 
        configuration = new Configuration(); 
        configuration.Configure();       
        configuration.AddAssembly(typeof(User).Assembly); 
       } 
       return configuration; 
      } 
     } 

     public static ISessionFactory SessionFactory 
     { 
      get 
      { 
       if (sessionFactory == null) 
        sessionFactory = Configuration.BuildSessionFactory(); 
       return sessionFactory; 
      } 
     } 

     private SessionProvider() 
     { } 

     public static ISession GetSession() 
     { 
      return SessionFactory.OpenSession(); 
     } 
    } 

我的配置:

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> 
    <session-factory> 
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property> 
    <property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property> 
    <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property> 
    <property name="connection.connection_string">Server=.\SqlExpress;Initial Catalog=TestNH;User Id=dev;Password=123</property> 
    <property name="show_sql">true</property> 
    </session-factory> 
</hibernate-configuration> 

我創建一個控制檯應用程序來測試輸出:

靜態無效的主要(字符串[]參數) {

 Console.WriteLine("starting..."); 


     UserRepository users = new UserRepository(); 

     User user = users.GetById(1); 

     Console.WriteLine("user is null: " + (null == user)); 

     if(null != user) 
      Console.WriteLine("User: " + user.Username); 


     Console.WriteLine("ending..."); 
     Console.ReadLine(); 

    } 

錯誤:

的nhibernate說 '映射的例外是未處理'沒有persister爲:MyNH.Domain.User

可能是什麼問題,我做了映射?

回答

1

NH說你不要有User類的映射。
你可能忘了包括那個。嘗試從你的SessionProvider配置器調用它:

Fluently.Configure() 
    .Mappings(m => m.FluentMappings.AddFromAssemblyOf<UserMapping>()) 
    .BuildSessionFactory(); 
+0

創建SessionFactory時使用了無效或不完整的配置。請參閱PotentialReasons集合和InnerException以獲取更多詳細信息。 *數據庫未通過數據庫方法配置。 – mrblah 2009-08-18 17:28:13

+0

此代碼應放置在哪裏 – Xulfee 2011-07-07 05:35:12

相關問題