Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fluent nhibernate 事务.Save()上的FluentNhiberate映射SQLCE4值(?,,,?,?)_Fluent Nhibernate_Sql Server Ce_Fluent Nhibernate Mapping - Fatal编程技术网

Fluent nhibernate 事务.Save()上的FluentNhiberate映射SQLCE4值(?,,,?,?)

Fluent nhibernate 事务.Save()上的FluentNhiberate映射SQLCE4值(?,,,?,?),fluent-nhibernate,sql-server-ce,fluent-nhibernate-mapping,Fluent Nhibernate,Sql Server Ce,Fluent Nhibernate Mapping,我想不出这个。。。 我尝试将FluentNhibernate与SQLCE4结合使用。。对于会话,我的配置如下所示: public class FluentNHibernateFactory { private static ISessionFactory CreateSessionFactory() { return Fluently.Configure() .Database(MsSqlCeConfiguration.Standard

我想不出这个。。。 我尝试将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();
    }
}
公共类FluentNHibernateFactory
{
私有静态ISessionFactory CreateSessionFactory()
{
流畅地返回。Configure()
.数据库(MSSQLSEConfiguration.Standard
.ConnectionString(ConfigurationManager.ConnectionString[“SqlCeDatabase”].ConnectionString))
.Mappings(m=>m.FluentMappings.AddFromAssemblyOf())
.BuildSessionFactory();
}
公共静态ISession GetOpenSession()
{
返回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");
    }
}
公共类应用程序映射:类映射
{
公共应用程序映射()
{
表(“申请”);
Id(x=>x.Id).GeneratedBy.Assigned().Column(“Id”);
Id(x=>x.Alias).Column(“别名”);
Id(x=>x.Name).Column(“Name”);
映射(x=>x.Created).Column(“Created”);
Map(x=>x.CreatedByUser).Column(“createdBy”);
映射(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();
    }
}
公共类应用程序存储库:IRepository
{
公共作废添加(ApplicationEntity实体)
{
使用(var session=FluentNHibernateFactory.GetOpenSession())
{
使用(ITransaction transaction=session.BeginTransaction())
{
session.Save(实体);
//TODO:修复添加功能
Commit();
}
}
}
公共作废删除(ApplicationEntity实体)
{
抛出新的NotImplementedException();
}
公共无效更新(ApplicationEntity实体)
{
抛出新的NotImplementedException();
}
公共IEnumerable GetAll()
{
使用(var session=FluentNHibernateFactory.GetOpenSession())
{
使用(ITransaction transaction=session.BeginTransaction())
{
返回会话.CreateCriteria().List().AsEnumerable();
}
}
}
公共应用程序属性GetById(长id)
{
抛出新的NotImplementedException();
}
}
但我就是不能向数据库中添加任何对象。。传递给Add方法的实体对象具有所有属性的值,并且它们似乎也是有效的属性。。但是我在表中有三个主键,所以这可能是问题所在吗

顺便说一下,这张表是这样的:


应用程序| Id | bigint |非空|主键 别名| nvarchar(25)|非空|主键 名称| nvarchar(100)|非空|主键 已创建|日期时间|不为空 createdBy | bigint |不为空 更新的|日期时间|空 由| bigint | NULL更新 你们看到这里有什么不对劲吗?。我是新来NHibernate的,所以我可能在这里做了一些很奇怪的事情

我得到的错误是: {“无法插入:[LBi.CATT.Core.Domain.Entities.ApplicationEntity#Test][SQL:insert-INTO-Applications(created、createdBy、updated、updatedBy、name)值(?,?,?,?)]”

对于内部异常: {“数据转换失败。[OLE DB状态值(如果已知)=2]”}

很抱歉,表的格式不正确


提前谢谢

以下内容不合法

Id(x => x.Id).GeneratedBy.Assigned().Column("id");
Id(x => x.Alias).Column("alias");
Id(x => x.Name).Column("name");
使用此选项(如果Id是主键)

或者这个(如果Id、别名、名称一起是主键)


是否采用了不同的方法来解决此问题:)。。因为我已经有了一个Id,它将始终是标识帖子的一列,所以我将该Id列设置为Id,只需将其他列设置为唯一。。但我会将您的答案标记为答案,因为我后来发现,这就是在NHibernate中创建“复合id”的方式:)
Id(x => x.Id)
    .GeneratedBy.Assigned()
    .UnsavedValue(0)
    .Column("id");
Map(x => x.Alias).Column("alias");
Map(x => x.Name).Column("name");
CompositeId()
    .KeyProperty(x => x.Id, "id")
    .KeyProperty(x => x.Alias, "alias")
    .KeyProperty(x => x.Name, "name");