Pregunta

Estoy tratando de usar LinqToEntities y acabo de notar que no hay campos de clave externa en el modelo de datos. Eso parece causar algunos problemas al intentar agregar un registro.

Al leer, descubrí que al agregar un registro puede hacer algo como esto (el producto tiene una clave externa para la tabla Categorías).

Product myProduct = new Product();
myProduct.ProductName = ProductName;
myProduct.Categories = db.CategorySet.Where(c => c.CategoryID == CategoryID).First();
db.AddToProductSet(myProduct);
db.SaveChanges();

Estoy seguro de que hay una mejor manera de hacer esto. Pero mi pregunta es realmente, ¿es así como funciona en LinqToEntities? Me parece que esto es mucho más complicado que simplemente darle una clave foránea (es decir, myProduct.CategoryID = categoryid).

Si tengo 5 claves foráneas en una tabla, ¿tendré que recuperar 5 objetos para vincularlos?

Puedo ver cómo hacer lo anterior podría tener sentido y tener beneficios, pero no veo el beneficio si solo está tratando de agregar 1 registro a la base de datos que tiene una sola clave externa en otra tabla.

¿Fue útil?

Solución

Para cualquiera que sea nuevo en Linq To Entities y se pregunte lo mismo que hice ... sí, así es como es Linq To Entities. Debe hacer referencia a un objeto real en lugar de simplemente dar una clave foránea.

Me parece que esto haría algo malo en el rendimiento, pero por lo que he hecho hasta ahora, el rendimiento no es malo en absoluto. En realidad, ha sido mejor que Linq To SQL.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top