C# 使用Fluent NHibernate映射复合表时出错
我在使用fluent nhibernate映射复合表时遇到问题,它遵循代码并返回问题,因此有人让我协助解决此问题: AmostraMap.cs: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
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引用它时没有这两个字段。请不要混淆多种语言。我喜欢葡萄牙语。但是如果你把所有的东西都用英语,那就容易多了。请不要把几种语言混在一起。我喜欢葡萄牙语。但是如果你把所有的东西都用英语,那就容易多了。