Ошибка FluentNHibernate - «Неверное имя объекта» - PullRequest
1 голос
/ 16 мая 2010

Я пытаюсь сделать самые простые сопоставления с FluentNHibernate & Sql2005. По сути, у меня есть таблица базы данных под названием "sv_Categories". Я хотел бы добавить категорию, автоматически установив идентификатор и добавив ID пользователя и заголовок.

Макет таблицы базы данных:

  • CategoryID - int - не нулевой, первичный ключ, автоинкремент
  • UserID - уникальный идентификатор - не нуль
  • Заголовок - varchar (50) - не ноль

Simple.

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

Мой код ClassMap:

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

получаю ошибку

Неверное имя объекта «Категория». Описание: необработанное исключение произошло во время исполнения текущий веб-запрос. Пожалуйста, просмотрите трассировка стека для получения дополнительной информации о ошибка и откуда она возникла код.

Сведения об исключении: System.Data.SqlClient.SqlException: Неверное имя объекта «Категория».

Я думаю, возможно, я не велел классу CategoryMap использовать таблицу "sv_Categories", но я не уверен, как это сделать.

Любая помощь будет оценена. Спасибо!

1 Ответ

5 голосов
/ 16 мая 2010

Используйте метод Table в вашем ClassMap.

public class CategoryMap : ClassMap<Category>
{
  public CategoryMap()
  {
    Table("sv_Categories"); 
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...