Я не могу понять это ...
Я попытался использовать FluentNhibernate с SQLCE4 .. и мои настройки выглядят так для сессии:
public class FluentNHibernateFactory
{
private static ISessionFactory CreateSessionFactory()
{
return Fluently.Configure()
.Database(MsSqlCeConfiguration.Standard
.ConnectionString(ConfigurationManager.ConnectionStrings["SqlCeDatabase"].ConnectionString))
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<ApplicationEntity>())
.BuildSessionFactory();
}
public static ISession GetOpenSession()
{
return CreateSessionFactory().OpenSession();
}
}
и мои отображения выглядят так:
public class ApplicationMap : ClassMap<ApplicationEntity>
{
public ApplicationMap()
{
Table("Applications");
Id(x => x.Id).GeneratedBy.Assigned().Column("id");
Id(x => x.Alias).Column("alias");
Id(x => x.Name).Column("name");
Map(x => x.Created).Column("created");
Map(x => x.CreatedByUser).Column("createdBy");
Map(x => x.Updated).Column("updated");
Map(x => x.UpdatedByUser).Column("updatedBy");
}
}
и наконец .. мой репозиторий выглядит так ..:
public class ApplicationRepository : IRepository<ApplicationEntity>
{
public void Add(ApplicationEntity entity)
{
using (var session = FluentNHibernateFactory.GetOpenSession())
{
using (ITransaction transaction = session.BeginTransaction())
{
session.Save(entity);
//TODO: Fix the add functionality
transaction.Commit();
}
}
}
public void Remove(ApplicationEntity entity)
{
throw new NotImplementedException();
}
public void Update(ApplicationEntity entity)
{
throw new NotImplementedException();
}
public IEnumerable<ApplicationEntity> GetAll()
{
using (var session = FluentNHibernateFactory.GetOpenSession())
{
using (ITransaction transaction = session.BeginTransaction())
{
return session.CreateCriteria<ApplicationEntity>().List<ApplicationEntity>().AsEnumerable<ApplicationEntity>();
}
}
}
public ApplicationEntity GetById(long id)
{
throw new NotImplementedException();
}
}
Но я просто не могу добавить какие-либо объекты в свою базу данных ... Объекты сущностей, которые передаются методу Add, имеют значения для всех свойств, и они также, похоже, являются допустимыми свойствами ... но у меня, тем не менее, есть три первичных ключа в таблице, может ли это быть проблемой?
Кстати, таблица выглядит так:
Приложения |
Id | bigint | НЕ НУЛЬ | Первичный ключ
псевдоним | nvarchar (25) | НЕ НУЛЬ | Первичный ключ
имя | nvarchar (100) | НЕ НУЛЬ | Первичный ключ
создано | дата и время | НЕ NULL
создалBy | bigint | НЕ NULL
обновлено | дата и время | NULL
updatedBy | bigint | NULL
Ребята, вы видите здесь что-нибудь не так? Я новичок в NHibernate, поэтому я мог бы сделать что-то действительно странное здесь ...
Ошибка, которую я получаю:
{"не удалось вставить: [LBi.CATT.Core.Domain.Entities.ApplicationEntity # Test] [SQL: INSERT INTO Приложения (созданы, созданы, обновлены, обновлены, имя) ЗНАЧЕНИЯ (?,?,?,?,?) ] "}
и для внутреннего исключения:
{"Преобразование данных не удалось. [Значение состояния OLE DB (если известно) = 2]"}
извините за плохое форматирование таблицы ..
Заранее спасибо!