relations one many framework foreign first dbmodelbuilder code entity-framework ef-code-first

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