2009-04-07 2 views
1

Ich versuche, FluentNHibernate zum Laufen zu bringen.FluentNHibernate: Ungültiger Objektname auf SaveOrUpdate

Wenn ich versuche, ein Entitätsobjekt dem db hinzufügen I „ungültige Objektnamen‚Rezept‘Fehler in der inneren Ausnahme und dieser Haupt Ausnahme erhalten

konnte nicht einfügen: [OurRecipes.Domain.Recipe] [ SQL: INSERT INTO Rezept (EnteredByID, ModifiedOn, Methode, PrepTime, CookTime, RezeptTitel) VALUES (?,?,?,?,?,?); SCOPE_IDENTITY() auswählen

So konfiguriere ich es.

public static ISessionFactory Create() 
    { 
     return Fluently.Configure() 
      .Database(MsSqlConfiguration.MsSql2005 
      .ConnectionString(c => c.Is("Server=(local);initial catalog=OurRecipesDB;Integrated Security=SSPI"))) 
      .Mappings(m => m.FluentMappings.AddFromAssemblyOf<Recipe>()) 
      .BuildSessionFactory(); 
    } 

Dies ist meine erste gehen zu diesem so ....

Es scheint nicht "Rezept" -Klasse in meinem Domänenprojekt zu erkennen, obwohl diese Konfiguration ohne Fehler ausgeführt wird.

Dies ist der Code, wo ich den Fehler in der Zeile SaveOrUpdate erhalten.

 var factory = SessionFactoryCreator.Create(); 

     using (var session = factory.OpenSession()) 
     { 

      Recipe rec = new Recipe(); 
      rec.RecipeTitle = "test"; 
      rec.Method = "test"; 
      rec.PrepTime = 10; 
      rec.CookTime = 20; 
      rec.EnteredByID = 1; 
      rec.ModifiedOn = DateTime.Now; 

      session.SaveOrUpdate(rec); 

}

EDIT: Sorry Leute die SQL-Tabelle Name Rezepte ist ..... Nun, es ist hier zu spät!

Antwort

2

Wie sieht Ihr Mapping für Recipe aus? Meine Wette ist, dass Sie den Tabellennamen nicht definiert haben. Ihr Mapping-Klasse sollte etwa wie folgt aussehen:

public class RecipeMap : ClassMap<Recipe> 
{ 
    public RecipeMap() 
    { 
     SchemaIs("dbo"); 
     WithTable("Recipes"); 
     [... additional mappings ...] 
    } 
} 
+0

Dies behoben ein ähnliches Problem, das ich hatte. Vielen Dank! –