FluentNHibernate:SaveOrUpdate上的对象名称无效

时间:2009-04-07 12:50:35

标签: fluent-nhibernate

我正在努力让FluentNHibernate运行起来。

当我尝试将实体对象添加到db时,我在内部异常中得到“无效对象名称'Recipe'错误,这是主要异常

无法插入:[OurRecipes.Domain.Recipe] [SQL:INSERT INTO Recipe(EnteredByID,ModifiedOn,Method,PrepTime,CookTime,RecipeTitle)VALUES(?,?,?,?,?,?);选择SCOPE_IDENTITY()]

这就是我配置它的方式。

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();
    }

这是我第一次这样做......

即使在我的域项目中似乎没有识别出“Recipe”类 此配置运行时没有错误。

这是我在SaveOrUpdate行上收到错误的代码。

        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);

}

编辑:不好意思,SQL表的名字是Recipes .....好吧,它已经很晚了!

1 个答案:

答案 0 :(得分:2)

您对食谱的映射是什么样的?我敢打赌,你没有定义表名。您的映射类应如下所示:

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