net many framework foreign data asp entity-framework foreign-keys entity entitykey

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

Alex