1
我有用MySQL設置的LINQ to Entities。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();
有沒有什麼辦法,使就地的變化,而無需使陣列的複製,使得其傳播到數據庫?例如,要將該字節[]標記爲髒(或更好的解決方案)?
謝謝。這工作,一些小的變化。 entry.Property行需要移到if語句之外,否則它不會在已經連接的實體上運行。 其參數中的lambda也無效,但它只是將該字段的名稱作爲字符串來使用。 如果您將此行移到if語句下面,我會將其標記爲答案。 –
在Detached檢查之外移動了「Property」行,但是lambda版本是該方法的首選重載,因爲如果屬性名稱更改,您將收到編譯時錯誤。也許你在你的文件中缺少'using',或者你的EF版本不支持它?以下是引用它的文檔:http://msdn.microsoft.com/en-us/library/gg671304(v=vs.113).aspx – Ocelot20