2009-05-28 1 views
0

Ich versuche Nhibernate mit fließenden Nhibernate Mappings zu lernen, und ich habe eine kleine Test-App erstellt. Unten ist der Code:Fluent Nhibernate Nunit Test Fehler

Benutzerklasse:

public class User 
{ 
    public string UserName { get; set; } 
    public string Password { get; set; } 
    public string Role { get; set; } 
    public string Email { get; set; } 
    public DateTime JoinDate { get; set; } 
} 

Benutzerkarte Klasse:

public class UserMapping: ClassMap<User> 
{ 
    public UserMapping() 
    { 
     WithTable("UserT"); 
     Not.LazyLoad(); 
     Id(u => u.UserName); 
     Map(u => u.Password); 
     Map(u => u.Role); 
     Map(u => u.Email); 
     Map(u => u.JoinDate); 

    } 
} 

DAL Benutzerklasse:

public class DALUser 
{ 

    public User GetUserByUserName(string userName) 
    { 
     ISessionFactory sessionFactory = Fluently.Configure() 
      .Database(MsSqlConfiguration.MsSql2005.ConnectionString(c => c.Server("ServerName").Database("DBName").TrustedConnection())) 
       .Mappings(m => m.FluentMappings.AddFromAssemblyOf<UserMapping>()).BuildSessionFactory(); 

     ISession session = sessionFactory.OpenSession(); 
     return session.Get<User>(userName); 
    } 

} 

Nunit Testklasse:

[TestFixture] 
public class UserTest 
{ 
    [Test] 
    public void CanGetUserByUserName() 
    { 
     DALUser user1 = new DALUser(); 
     Assert.AreEqual("testUser", user1.GetUserByUserName("testUser").UserName); 
    } 

} 

Wenn ich versuche, die Testklasse auszuführen, erhalte ich den folgenden Fehler: Objektverweis nicht auf eine Instanz eines Objekts festgelegt. Ich habe einen Haltepunkt in der GetUserByUserName-Methode platziert und festgestellt, dass es einen Nullbenutzer zurückgibt. Aber ich kann nicht herausfinden, warum das passiert. Kann mir jemand helfen?

+0

Wenn Sie die Datenbank mit SELECT * FROM Benutzer WHERE UserName = 'testUser' abfragen, was ist das Ergebnis? –

Antwort

0

Schauen Sie, ob Ihre Datenbankkonfiguration korrekt ist? Sind Sie sicher, dass Ihr Datenbankserver "ServerName" ist und Sie bereits Datenbank "DBName" haben