He publicado este question ayer por la tarde, lo que me ha llevado a descubrir un gran problema!Linq-to-Sql SubmitChanges no actualiza campos ... ¿por qué?
Tengo una columna decimal en mi base de datos llamada Unidades, cada vez que configuro el valor de la columna como NO CERO, y SubmitCambia las actualizaciones de columna con el nuevo valor. Si intento establecer el valor de la columna en CERO, el SubmitChanges no actualiza la columna.
data.Units = this.ReadProperty<decimal>(UnitsProperty);
data.UnitPrice = this.ReadProperty<decimal>(UnitPriceProperty);
data.Price = this.ReadProperty<decimal>(PriceProperty);
que he tomado un vistazo al registro de DataContext y puedo ver que el campo con el valor cero no está incluido en la consulta. Incluso si trato de codificar el cambio, Linq lo ignora.
data.Units = 0;
data.UnitPrice = 0;
data.Price = 0;
¡No hace falta decir que esto me está matando! ¿Alguna idea de por qué sucede esto?
Solución
me di cuenta de mi problema con la ayuda de la comunidad SO. Mi problema fue causado por el hecho de que cuando creé mi entidad para adjuntar, el valor predeterminado de la columna se estableció en cero, por lo que cuando intentó asignar el valor a cero ... LinqToSql dice "hey ... nada cambió, por lo No estoy actualizando el valor.
Lo que estoy haciendo ahora ... sólo para que sea trabajo es la siguiente:
ctx.DataContext.InvoiceItems.Attach(data, true);
que parece obligar a todos los valores de escribir ellos mismos a la base de datos. Esto funciona por ahora.
¿Alguno de los métodos parciales en su clase como OnCreated() o OnChanged() ha causado interferencia? ¿Has triplicado el control de tu modelo? –
@Dave pregunta tonta ... pero ¿qué quieres decir con triple tripa? – mattruma
Quiero decir que es temprano y todavía no he tomado mi café. ;-) Es decir, ¿has verificado dos veces la definición de tu archivo dbml (tipos de datos, anulables, relaciones) contra tu db? –