我有这些类,然后需要以 1:1 的关系进行映射,但我对 fluent API 还没有很好的了解,我在运行时收到了这个错误(调试):
“错误 3015: Problema nos fragmentos do mapeamento a partir das linhas 6, 22, 191:Restrição de chave estrangeira 'OperadorModel_OpCadastros1' da tabela OperadorModel (OpCadastros1_OperadorId) para a tabela OperadorModel (id):: Mapeamento insuficiente: a chave estrangeira deve para algum AssociationSet 或 EntitySets 参与者 de uma associação de chave estrangeira no lado conceitual。”
就像是:
“错误 3015:从第 6、22、191 行映射片段时出现问题:表 OperadorModel (id) 的外键约束 'OperadorModel_OpCadastros1' 表 OperadorModel (OpCadastros1_OperadorId) :: 映射不足:必须为某些 AssociationSet EntitySets 映射外键或参与概念中的外键关联。”
如何解决这个问题呢?
代码如下。谢天谢地,对不起我的英语不好。
public class OperadorModel
{
public int OperadorId { get; set; }
public string Login { get; set; }
public bool TiraMenu { get; set; }
public virtual OpCadastros1Model OpCadastros1 { get; set; }
}
public class OpCadastros1Model
{
public int OperadorId { get; set; }
public virtual OperadorModel Operador { get; set; }
#region Apoio
[Column("cad_apoio_ac")]
[Display(Description = "Acessar", GroupName = "Cadastros", Name = "Laboratórios de Apoio")]
public bool AcApoio { get; set; }
[Column("cad_apoio_ad")]
[Display(Description = "Adicionar", GroupName = "Cadastros", Name = "Laboratórios de Apoio")]
public bool AdApoio { get; set; }
[Column("cad_apoio_md")]
[Display(Description = "Modificar", GroupName = "Cadastros", Name = "Laboratórios de Apoio")]
public bool MdApoio { get; set; }
[Column("cad_apoio_co")]
[Display(Description = "Consultar", GroupName = "Cadastros", Name = "Laboratórios de Apoio")]
public bool CoApoio { get; set; }
[Column("cad_apoio_ex")]
[Display(Description = "Excluir", GroupName = "Cadastros", Name = "Laboratórios de Apoio")]
public bool ExApoio { get; set; }
#endregion
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.Entity<OperadorModel>()
.HasKey(op => op.OperadorId);
modelBuilder.Entity<OpCadastros1Model>()
.HasKey(cad => cad.OperadorId)
.HasRequired(cad => cad.Operador)
.WithRequiredPrincipal(cad => cad.OpCadastros1);
modelBuilder.Entity<OperadorModel>().ToTable("operador", "public");
modelBuilder.Entity<OpCadastros1Model>().ToTable("operador", "public");
}