【发布时间】:2014-01-27 14:37:38
【问题描述】:
我用 MySQL 设置了 LINQ to Entities。
一个字段是二进制类型,例如 varbinary(50)。
LINQ to Entities 将其正确返回为 byte[]。
但是,如果我只是更改 byte[] 中一个索引的值,则在调用 SaveChanges() 时更改不会传播到数据库。
例如,这不起作用:
byte[] foo = GetBinaryFromDatabase(context);
foo[0] = 42;
context.SaveChanges();
我可以让它保存更改,方法是创建一个全新的字节数组,将其复制并分配回去,而不是就地执行。
例如,这是有效的:
byte[] foo = GetBinaryFromDatabase(context);
byte[] bar = new byte[foo.Length];
Array.Copy(foo, bar, foo.Length);
bar[0] = 42;
foo = bar;
context.SaveChanges();
有什么方法可以在原地进行更改而无需复制数组,以便将其传播到数据库?例如,将该 byte[] 标记为脏(或更好的解决方案)?
【问题讨论】:
标签: c# mysql linq entity-framework binary