C# 使用Fluent NHibernate映射复合表时出错

C# 使用Fluent NHibernate映射复合表时出错,c#,nhibernate,fluent-nhibernate,C#,Nhibernate,Fluent Nhibernate,我在使用fluent nhibernate映射复合表时遇到问题,它遵循代码并返回问题,因此有人让我协助解决此问题: AmostraMap.cs: using FluentNHibernate.Automapping; using FluentNHibernate.Mapping; using PedidoWeb.Dominio; namespace PedidoWeb.Persistencia { public class AmostraMap : ClassMap<Amostr

我在使用fluent nhibernate映射复合表时遇到问题,它遵循代码并返回问题,因此有人让我协助解决此问题:

AmostraMap.cs:

using FluentNHibernate.Automapping;
using FluentNHibernate.Mapping;
using PedidoWeb.Dominio;

namespace PedidoWeb.Persistencia
{
    public class AmostraMap : ClassMap<Amostra>
    {
        public AmostraMap()
        {
            Table("USU_V200CAP");

            Id(u => u.Codigo, "NUMAMO");//.GeneratedBy.Assigned();

            Map(g => g.DataAmostra, "DATAMO");
            Map(g => g.Propriedade.Codigo, "SEQPRO");
            Map(g => g.QuantidadeSacas, "QTDSAC");
            Map(g => g.Situacao, "SITAMO");
            Map(g => g.NomeContato, "NOMCTO");
            Map(g => g.TelefoneContato, "TELCTO");
            Map(g => g.DataGeracao, "DATGER");
            Map(g => g.HoraGeracao, "HORGER");
            Map(g => g.TipoAnalise, "TIPANA");
            Map(g => g.AnalisePontuacao, "ANAPON");

            //References(u => u.Empresa, "CODEMP").LazyLoad();
            //References(u => u.Cooperado, "MATCPR");
            //References(u => u.Fornecedor, "CODFOR");
            //References(u => u.Usuario, "USUGER");
            //References(u => u.Filial, "CODFIL");
            //References(u => u.Representante, "CODREP").LazyLoad();            
            HasMany<Talhao>(u => u.Talhao).KeyColumns.Add("CODTAL", "CODEMP", "MATCPR", "SEQPRO").Cascade.All();
        }

        //public void Override(AutoMapping<Amostra> mapping)
        //{
        //    mapping.Id(x => x.Id).Column("RecordId");
        //    mapping.Map(x => x.Name).Not.Nullable();
        //    mapping.References(x => x.Parent).Not.Nullable().Column("ParentRecordId");
        //    mapping.References(x => x.Type).Not.Nullable().Column("TypeId");
        //}
    }
}
TalhaoMap.cs:

using FluentNHibernate.Mapping;
using PedidoWeb.Dominio;

namespace Sapiens.PedidoWeb.Persistencia.Mapeamento
{
    class TalhaoMap:ClassMap<Talhao>
    {
        TalhaoMap()
        {
            Table("usu_t113tal");
            //Id(e => e.Codigo, "USU_CODTAL");

            CompositeId()
                .KeyProperty(x => x.Codigo, "USU_CODTAL")
                .KeyReference(x => x.Empresa, "USU_CODEMP")
                .KeyReference(x => x.Cooperado, "USU_MATCPR")
                .KeyReference(x => x.Propriedade, "USU_SEQPRO", "USU_CODEMP", "USU_MATCPR");
            References(e => e.Empresa, "USU_CODEMP");
            References(e => e.Cooperado, "USU_MATCPR");
            //HasMany<Propriedade>(x => x.Propriedade).KeyColumns.Add("USU_SEQPRO", "USU_CODEMP", "USU_MATCPR").Cascade.All();

            Map(e=>e.AreaTotal, "USU_ARETOT");
            Map(e=>e.Latitude, "USU_LATTAL");
            Map(e=>e.Logitude, "USU_LONTAL");
            Map(e=>e.Altitude, "USU_ALTTAL");
            Map(e=>e.EspacoPlantas, "USU_ESPPLA");
            Map(e=>e.EspacoCarreiras, "USU_ESPCAR");
            Map(e=>e.QuantidadeCovas, "USU_QTDCOV");
            Map(e=>e.CodigoMeeiro, "USU_CODMEE");
            Map(e=>e.VencimentoMeeiro, "USU_VCTMEE");
            Map(e=>e.BloqMeeiro, "USU_BLOMEE");
            Map(e=>e.CodigoMotivoBloqueio, "USU_CODMBL");
            Map(e=>e.DataBloqueio, "USU_DATBLO");
            Map(e=>e.NumeroAnos, "USU_NROANO");
            Map(e=>e.DataInicio, "USU_DATINI");
            Map(e=>e.PercentagemMeeiro, "USU_PERMEE");
            Map(e=>e.PercentagemPropietario, "USU_PERPRO");
            Map(e=>e.RespDespesas, "USU_RESDSP");
            Map(e=>e.CodigoEspecieTipoProduto, "USU_CODETP");
            Map(e=>e.CodigoCultivar, "USU_CODCUL");
            Map(e=>e.AnoPlantio, "USU_ANOPLA");
            Map(e=>e.FaceLavoura, "USU_FACLAV");
            Map(e=>e.SituacaoTalhao, "USU_SITTAL");
            Map(e=>e.NomeTalhao, "USU_NOMTAL");
            Map(e=>e.Escriturado, "USU_TALESC");

        }
    }
}
例外情况:

外键FKEA30818A6C05BC04:usu_t113tal[CODTAL,CODEMP,MATCPR,SEQPRO]必须与引用的主键usu_V200CAP[NUMAMO]具有相同的列数


正如错误描述所述:

。。。必须与引用的主键具有相同的列数


您面临的问题是,TalhaoMap在复合ID定义中有USU_CODEMP、USU_MATCPR字段,而AmostraMap引用它时没有这两个字段。

如错误描述所示:

。。。必须与引用的主键具有相同的列数


您面临的问题是,TalhaoMap在复合ID定义中有USU_CODEMP、USU_MATCPR字段,而AmostraMap引用它时没有这两个字段。

请不要混淆多种语言。我喜欢葡萄牙语。但是如果你把所有的东西都用英语,那就容易多了。请不要把几种语言混在一起。我喜欢葡萄牙语。但是如果你把所有的东西都用英语,那就容易多了。