entity-framework - foreign - one to many relationship entity framework fluent api
Código EF First Fluent API que especifica la propiedad Foreign Key (2)
Tengo una clase AgentBalance con una asociación al agente, así:
public class AgentBalance
{
...
public int AgentId { get; set; }
public virtual Agent Agent { get; set; }
}
AgentId se detecta como el FK para la relación de agente por convención, pero quiero hacerlo explícito en la clase de Mapeo, para estar más seguro frente a futuros cambios. Si el Agente tenía una colección de saldos, entonces sé cómo hacerlo, por ejemplo:
HasRequired(t => t.Agent).WithMany(a => a.Balances).HasForeignKey(t => t.AgentId);
Sin embargo, el agente no tiene una colección de saldos; no quiero que la asociación sea navegable a la inversa. Pero sin el .WithMany en la asignación no tengo la opción de especificar .HasForeignKey. ¿Hay otra manera? (NB: Sé que también podría hacer esto usando atributos, pero quiero usar la asignación de API fluida).
Creo que deberías poder hacer esto:
HasRequired(t => t.Agent).WithMany().HasForeignKey(t => t.AgentId)
Prefiero usar Anotaciones de datos para estas tareas, no Fluent API. Es mucho más corto y fácil de entender. EF debe detectar las propiedades terminadas con "Id" automáticamente, pero para estar seguro, puede especificarlas explícitamente:
using System.ComponentModel.DataAnnotations.Schema;
...
public int AgentId { get; set; }
[ForeignKey("AgentId")]
public virtual Agent Agent { get; set; }
Deberá especificarlos explícitamente si su FK prop no termina con "Id", por ejemplo:
public int AgentCode { get; set; }
[ForeignKey("AgentCode")] // now this is needed if you''d like to have FK created
public virtual Agent Agent { get; set; }
Puede encontrar más detalles aquí: https://msdn.microsoft.com/en-us/data/jj591583.aspx