使用自定义字段作为键的实体框架1 = 1关系

问题描述

EF6

我需要配置这样的关系,其中:

USR_COMCLIENTI-[1-n]-> AGENTIPROV-[1-1]-> AGENTI

关系"USR_COMCLIENTI--[1-n]-->AGENTIPROV"已正确配置

但是我无法设置关系AGENTIPROV--[1-1]-->AGENTI,因为将AGENTIPROV与AGENTI连接起来的字段不是它的主键,而是另一个字段(比如说“ AGENTIPROV_IDAGENTE”)。

我不知道如何配置这种关系(将自定义字段映射为键), 而且关系应该由FluentApi设置,而不是属性

[entities]
public partial class USR_COMCLIENTI
{
    public int ClienteId { get; set; }
    ...
    ..
    public virtual List<AGENTIPROV> ClienteAgenti { get; set; } //navigation property to AGENTIPROV
}


public class AGENTIPROV
{
        public int AGENTIPROV_ID { get; set; }              //primary key
        public int AGENTIPROV_IDAGENTE { get; set; }        //key that should be userd to reference 1=1 to AGENTI
        public int? AGENTIPROV_IDSOGGETTO { get; set; }
      
        public virtual AGENTI Agente { get; set; }          //navigation property to AGENTI
}


public class AGENTI
{
        public int AGENTI_ID { get; set; }                  //primary ke7
        public string AGENTI_RAGIONE_SOCIALE { get; set; }
}


[configuration]
//this works
modelBuilder.Entity<USR_COMCLIENTI>()
                .ToTable("USR_COMCLIENTI")
                .HasKey(c => c.ClienteId)
                .HasMany<AGENTIPROV>(x => x.ClienteAgenti)  //navigation property towards AGENTIPROV
                .Withrequired() 
                .HasForeignKey(x => x.AGENTIPROV_IDSOGGETTO);



modelBuilder.Entity<AGENTIPROV>()
                .ToTable("AGENTIPROV")
                .HasKey(c => c.AGENTIPROV_ID);  //is the primary key

//this doens't work  
modelBuilder.Entity<AGENTIPROV>()
                .ToTable("AGENTIPROV")
                .HasKey(c => c.AGENTIPROV_IDAGENTE)  //is the key that should be used to join 1=1 with "AGENTI"
                .HasOptional(c => c.Agente)
                .Withrequired();



modelBuilder.Entity<AGENTI>()
                .ToTable("AGENTI")
                .HasKey(c => c.AGENTI_ID);  

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)