如何使用组合键映射join-subclass

时间:2016-05-30 12:36:12

标签: c# nhibernate

我想将Operationfinancial映射为Operation的连接子类。该模型与我发现的示例的不同之处在于两者都使用复合键。

操作地图。

public class OperationMap : ClassMapping<Operation>
    {
       public OperationMap()
         {
            this.Table("ECM_OPE_Operation");

            this.ComponentAsId(
           x => x.Id, compAsId =>
           {
               compAsId.Property(x => x.Id, m => { m.Column("Id");  m.NotNullable(true); });
               compAsId.Property(x => x.EventId, m => { m.Column("EventId"); m.NotNullable(true); });
           });

            this.Property(x => x.CreatedOn, map => map.NotNullable(true));
        }
   }

OperationFinancial Map。

 public class OperationfinancialMap : JoinedSubclassMapping<OperationFinancial>, IEntityMap
   {
        public OperationfinancialMap()
         {
        this.Table("ECM_OFI_OperationFinancial");
        this.Key(m =>
            {
                m.Column("Id");
                m.Column("EventId");
            });
        this.Property(x => x.Quantity, map => map.NotNullable(true));
        this.Property(x => x.Amount);
    }
   }

但是当我跑步时我发现了这个错误

外键(FK3EDDC7CF4D8FE893:ECM_OFI_OperationFinancial [EventId]))必须与引用的主键具有相同的列数(ECM_OPE_Operation [Id,EventId])

任何想法?

1 个答案:

答案 0 :(得分:0)

这是解决方案

 Key(key => key.Columns(c => c.Name("Id"), c => c.Name("EventId")));