foreign key mvc c#
Problemas al crear una relaciĆ³n Foreign-Key en Entity Framework (1)
Hay un conflicto entre su propiedad de clave externa en la clase Dettaglio
...
public virtual int IDTEST { get; set; }
... que tiene un tipo no nulo ( int
) y por lo tanto no puede ser opcional y su mapeo ...
this.HasOptional(t => t.TEST_TABLE) //...
... donde quieres que la relación sea opcional.
Si realmente desea una relación opcional, use una propiedad FK que se puede anular:
public virtual int? IDTEST { get; set; }
De lo contrario, debe usar HasRequired
para una relación requerida con una propiedad FK que no HasRequired
.
Tengo problemas para configurar una relación de clave externa en mi API de Entity Framework con fluidez:
Aquí está el jefe del informe:
public class Testata
{
public Testata() { Details = new List<Dettaglio>(); }
public virtual int IDTEST { get; set; }
public virtual string Value { get; set; }
public virtual int IDDETAIL { get; set; }
public virtual string IDTESTALT { get; set; }
public virtual byte[] BLOB { get; set; }
public virtual IList<Dettaglio> Details { get; set; }
}
Este es el detalle del informe
public class Dettaglio
{
public virtual int IDDETAIL { get; set; }
public virtual int IDTEST { get; set; }
public virtual string DSDETAIL { get; set; }
public virtual Testata TEST_TABLE { get; set; }
}
Y esta es mi definición de API fluida de ambos. Jefe del informe:
public TEST_TABLEMap()
{
// Primary Key
this.HasKey(t => t.IDTEST)
.Property(t => t.IDTEST)
.IsRequired()
.HasColumnType("Int")
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity)
.HasColumnName("IDTEST");
// Table & Column Mappings
this.ToTable("TEST_TABLE");
this.Property(t => t.Value).HasColumnName("DSVALUETEST");
this.Property(t => t.IDTESTALT).HasColumnName("IDTESTALT");
this.Property(t => t.BLOB).HasColumnName("BLOB");
}
Detalle del informe:
public TEST_DETAILMap()
{
// Primary Key
this.HasKey(t => t.DSDETAIL);
// Properties
this.Property(t => t.DSDETAIL);
// Table & Column Mappings
this.ToTable("TEST_DETAIL");
this.Property(t => t.IDDETAIL).HasColumnName("IDDETAIL");
// this.Property(t => t.IDTEST).HasColumnName("IDTEST");
this.Property(t => t.DSDETAIL).HasColumnName("DSDETAIL");
// Relationships
this.HasOptional(t => t.TEST_TABLE)
.WithMany(t => t.Details)
.HasForeignKey(d => d.IDDETAIL).WillCascadeOnDelete(true);
}
En la ejecución siempre obtengo este error
System.Data.Entity.Edm.EdmAssociationType: La multiplicidad entra en conflicto con la restricción referencial en Role ''Dettaglio_TEST_TABLE_Target'' en la relación ''Dettaglio_TEST_TABLE''. Debido a que todas las propiedades en el rol dependiente no admiten nulos, la multiplicidad del rol principal debe ser ''1''.
Lo cual, supongo, significa que estoy fallando algo en la definición de clave externa, pero realmente no sé dónde mirar. Cualquier ayuda / sugerencia es muy apreciada.