2009-05-22 8 views
10

En Linq To Sql, al actualizar una de mis entidades, Facultad, estoy creando una nueva instancia del objeto Facultad, entonces inicializando algunas de las propiedades con valores proporcionados por el usuario .Linq a SQL Adjuntar/Actualizar objeto de entidad

Si adjunto este nuevo objeto al conjunto de entidades y presento los cambios, las propiedades que no configuré toman el valor predeterminado de cualquier tipo de datos que sean.

¿Cómo puedo actualizar el nuevo objeto para que las propiedades que se han establecido mantengan sus valores y las propiedades que no se han establecido obtengan los valores de la base de datos?

Gracias

+0

solo por curiosidad, ¿los tipos nulos son "GUID"? – vidalsasoon

+0

No, son enteros –

Respuesta

14

¿Usted intentó

context.Refresh(RefreshMode.OverwriteCurrentValues, faculty);

después de enviar los cambios en context es su DataContext linq2sql y faculty es la entidad que desea actualizar?

+0

Me he dado cuenta de que también es necesario hacer 'yourBindingSource.ResetCurrentItem();' si está actualizando la entidad fuera del evento 'CurrentChanged' del origen de enlace. – Dor

0

¿Qué hay de recuperar el objeto de la base de datos, a continuación, cambiar los valores apropiados, a continuación, la presentación de la actualización?

+0

Mantengo un código que usa el método de adjuntar, y no estoy muy seguro de por qué no fue escrito para hacer lo que sugieres para comenzar. –

+0

Creo que se está refiriendo a la creación de una nueva entrada en una tabla. – vidalsasoon

+0

¡Oh! Ahora recuerdo. Es porque hay un campo de marca de tiempo llamado versión. Hacer lo que sugirió provoca este error: se modificó el valor de la 'Versión' de miembro de un objeto de tipo 'Facultad'. Un miembro que es computado o generado por la base de datos no puede ser cambiado. –