tengo una separación completa de mis objetos de Entity Framework y mis objetos POCO, yo sólo traduzco un lado a otro ...¿Cómo puedo adjuntar un objeto de Entity Framework que no es de la base de datos?
es decir:
// poco
public class Author
{
public Guid Id { get; set; }
public string UserName { get; set; }
}
y luego tengo un objeto EF "Autores" con las mismas propiedades ..
por lo que tengo a mi objeto de negocio
var author = new Author { UserName="foo", Id="Guid thats in the db" };
y quiero guardar este objeto así hago el Follo ala:
var dbAuthor = new dbAuthor { Id=author.Id, UserName=author.UserName };
entities.Attach(dbAuthor);
entities.SaveChanges();
pero esto me da el siguiente error:
An object with a null EntityKey value cannot be attached to an object context.
EDIT: Parece que tengo que usar entities.AttachTo ("Autores", dbAuthor); para adjuntar sin una EntityKey, pero luego tengo cadenas mágicas codificadas, que se romperán si cambio los nombres de mis conjuntos de entidades y no tendré tiempo de compilación comprobando ... ¿Hay alguna manera de adjuntar que mantenga el tiempo de compilación? ?
Yo esperaría que fuera capaz de hacer esto, como cadenas codificadas duro matar a la validación en tiempo de compilación apestaría =)
¿Usted miró la edición de mi respuesta? O para hacerlo sin cadenas mágicas o AttachTo ya que los métodos son generados y mantenidos por el modelo de edmx. –
Sí, no lo estoy agregando, lo estoy actualizando, así que tengo que adjuntarme a él y guardar los cambios – sontek
. Sigo creyendo que su modelo tiene un problema con la propiedad Id en el objeto Autores que no se configura como EntityKey , se debe revisar el XML generado y asegúrese de que está anidado en un elemento clave y asegúrese de que la propiedad Id tiene el atributo EdmScalarPropertyAttribute (EntityKeyProperty = true) –