many - Entity Framework EntityKey/Foreign Key problema
foreign key entity c# (3)
Lo que necesita es una instancia de Marca y Género y luego configure Brand.Gender para la instancia de Género. Entonces puedes guardar sin problemas.
Como resultado de una publicación de formulario, intento guardar un nuevo registro de marca. En mi opinión, Género es un menú desplegable, que devuelve un Entero, que se llena desde ViewData ("género")
Configuré mi enlace de la siguiente manera:
gID = CInt(Request.Form("Gender"))
Brand.GenderReference.EntityKey = New EntityKey("DB_ENTITIES.Gender", "Id", gID)
TryUpdateModel(Brand)
DB.SaveChanges()
Lo que resulta en el siguiente error.
Entities in ''DB_ENTITIES.Brand'' participate in the ''FK_Brand_Gender'' relationship. 0 related ''Gender'' were found. 1 ''Gender'' is expected.
¿Podría alguien explicar los parámetros en inglés sencillo para mí? También probé DB.Gender como el primer parámetro, pero sin alegría.
Ok aquí está lo que he encontrado en lugar de usar updateModel. Parece que es problemático / potencialmente un riesgo de seguridad de todos modos con campos potencialmente adicionales que se agregan en la publicación. Se puede instanciar una nueva instancia de Género a través de trygetObjectByKey. Esto está funcionando hasta ahora. Se agradece cualquier otra sugerencia para que UpdateModel actualice el objeto de propiedad Gender.
Dim cID As Integer
cID = CInt(Request.Form("Gender"))
Dim key As New EntityKey(DB.DefaultContainerName() & ".Gender", "ID", cID)
Dim objGenderDS As New Gender
''Bring back the Gender object.
If DB.TryGetObjectByKey(key, objGenderDS) Then
Brand.GenderReference.EntityKey = key
Brand.Gender = objGenderDS
DB.AddToBrand(Brand)
DB.SaveChanges()
Else
End If
En lugar de crear una EntityKey, crea un objeto de género de stub (lo siento, no soy un tipo de VB en C #):
Gender g = new Gender{ID = Int32.Parse(Request.Form("Gender"))};
A continuación, adjunte Gender al EntitySet
apropiado (el nombre de la propiedad en DB
que obtiene Entidades de género es la siguiente cadena):
DB.AttachTo("Genders",g);
Esto pone la base de datos en el estado donde el género está en el ObjectContext
en el estado sin cambios sin una consulta de base de datos. Ahora puedes construir una relación como de costumbre
brand.Gender = g;
DB.AddToBrand(brand);
DB.SaveChanges();
Eso es todo lo que hay que hacer. No hay necesidad de perder el tiempo con EntityKeys
Espero que esto ayude