C# nHibernate生成者。分配的isn';行不通

C# nHibernate生成者。分配的isn';行不通,c#,fluent-nhibernate,insert,C#,Fluent Nhibernate,Insert,我试图插入一个带有复合键的记录(不是我的数据库设计,我被迫使用corporates模式,所以这里不允许更改DB) 我有以下的POCO课程 public class RulesEngineHeader { public virtual string CompanyCode { get; set; } public virtual string RuleID { get; set; } public virtual string RuleGroup { get; set; }

我试图插入一个带有复合键的记录(不是我的数据库设计,我被迫使用corporates模式,所以这里不允许更改DB)

我有以下的POCO课程

public class RulesEngineHeader
{
    public virtual string CompanyCode { get; set; }
    public virtual string RuleID { get; set; }
    public virtual string RuleGroup { get; set; }
    public virtual string RuleDescription { get; set; }
    public virtual string Expression { get; set; }
}    
以及以下映射(使用Fluent)

和uow.Commit();做一个 _session.Flush()

当我执行此操作时,我将尝试执行以下查询:

INSERT INTO LIOEP023
    (RGRP23,
    RLDS23,
    EXPR23,
    RLID23)
VALUES      ('AC' /* @p0_0 */,
    'Description' /* @p1_0 */,
    'This is my rule expression' /* @p2_0 */,
    'TEST' /* @p3_0 */)
如您所见,我的CompanyCode/CONO23找不到,这导致了一个错误


你知道为什么我的insert中没有使用这个吗?

我发现我应该使用CompositeId,而不是使用2个Id

因此,我的代码应该如下所示:

internal RulesEngineHeaderMap()
{
    Table("LIOEP023");

    CompositeId()
        .KeyProperty(x => x.CompanyCode, "CONO23")
        .KeyProperty(x => x.RuleID, "RLID23");
    Map(x => x.RuleGroup, "RGRP23")
        .Length(30)
        .Not.Nullable();
    Map(x => x.RuleDescription, "RLDS23")
        .Length(50)
        .Not.Nullable();
    Map(x => x.Expression, "EXPR23")
        .Length(2500)
        .Not.Nullable();
}
_uow.Session.Save(entityObject);
if (_tx != null)
    _tx.Commit();
INSERT INTO LIOEP023
    (RGRP23,
    RLDS23,
    EXPR23,
    RLID23)
VALUES      ('AC' /* @p0_0 */,
    'Description' /* @p1_0 */,
    'This is my rule expression' /* @p2_0 */,
    'TEST' /* @p3_0 */)
internal RulesEngineHeaderMap()
{
    Table("LIOEP023");

    CompositeId()
        .KeyProperty(x => x.CompanyCode, "CONO23")
        .KeyProperty(x => x.RuleID, "RLID23");
    Map(x => x.RuleGroup, "RGRP23")
        .Length(30)
        .Not.Nullable();
    Map(x => x.RuleDescription, "RLDS23")
        .Length(50)
        .Not.Nullable();
    Map(x => x.Expression, "EXPR23")
        .Length(2500)
        .Not.Nullable();
}