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);