我无法弄清楚这个...我尝试将 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 方法的实体对象具有所有属性的值,它们似乎也是有效的属性。但是我确实在表中有三个主键,所以这可能是问题吗?
顺便说一下,表格看起来像这样:
应用 |
身份证 | 大整数 | 非空 | 首要的关键
别名 | nvarchar(25) | 非空 | 首要的关键
姓名 | nvarchar(100) | 非空 | 首要的关键
创建 | 日期时间 | 非空
创建者 | 大整数 | 非空
更新 | 日期时间 | 空值
更新者 | 大整数 | 空值
大家有没有看到这里有什么不对劲的地方?我是 NHibernate 的新手,所以我可能在这里做了一些非常奇怪的事情。
我得到的错误是:{“无法插入:[LBi.CATT.Core.Domain.Entities.ApplicationEntity#Test][SQL: INSERT INTO Applications (created, createdBy, updated, updatedBy, name) VALUES (?, ?, ?, ?, ?)]"}
对于内部异常:{“数据转换失败。[OLE DB 状态值(如果已知)= 2]”}
抱歉表格的格式不好..
提前致谢!