2010-05-16 77 views
1

我正在尝试做最简单的映射与FluentNHibernate & Sql2005。基本上,我有一个名为“sv_Categories”的数据库表。我想添加一个类别,自动设置ID,并添加提供的用户标识和标题。FluentNHibernate错误 - “无效的对象名称”

数据库表的布局:

  • 类别ID - INT - 不空,主键,自动递增
  • 用户名 - 唯一标识符 - 不为空
  • 标题 - VARCHAR(50 ) - 非空

简单。

My SessionFactory code (which works, as far as I can tell): 
      _SessionFactory = Fluently.Configure().Database(
       MsSqlConfiguration.MsSql2005 
        .ConnectionString(c => c.FromConnectionStringWithKey("SVTest"))) 
        .Mappings(x => x.FluentMappings.AddFromAssemblyOf<CategoryMap>()) 
        .BuildSessionFactory(); 

我的类映射代码:

public class CategoryMap : ClassMap<Category> 
{ 
    public CategoryMap() 
    { 
     Id(x => x.ID).Column("CategoryID").Unique(); 
     Map(x => x.Title).Column("Title").Not.Nullable(); 
     Map(x => x.UserID).Column("UserID").Not.Nullable(); 
    } 
} 

我的班级代码:

public class Category 
{ 
    public virtual int ID { get; private set; } 
    public virtual string Title { get; set; } 
    public virtual Guid UserID { get; set; } 

    public Category() 
    { 
     // do nothing 
    } 
} 

而且网页,我保存对象:

public void Add(Category catToAdd) 
    { 
     using (ISession session = SessionProvider.GetSession()) 
     { 
      using (ITransaction Transaction = session.BeginTransaction()) 
      { 
       session.Save(catToAdd); 
       Transaction.Commit(); 
      } 
     } 
    } 

我收到错误

无效的对象名称'Category'。 描述:在执行 当前Web请求期间发生未处理的异常 。请查看 堆栈跟踪以了解有关 错误的更多信息,以及它源自 的代码。

异常详细信息: System.Data.SqlClient.SqlException: 无效的对象名称'Category'。

我想这可能是我没有告诉CategoryMap类使用“sv_Categories”表,但我不知道该怎么做。

任何帮助,将不胜感激。谢谢!

回答

5

在您的ClassMap中使用Table方法。

public class CategoryMap : ClassMap<Category> 
{ 
    public CategoryMap() 
    { 
    Table("sv_Categories"); 
    } 
} 
+0

这样做!非常感谢! :) – SeanKilleen 2010-05-16 15:48:59

相关问题