實體框架是否錯誤地檢測到對圖像的更改?ObjectStateEntry GetModifiedProperties()錯誤地檢測到對byte []屬性的更改
我有一個「Person」實體類定義如下;
public class Person
{
public int Id { get; set; }
public byte[] Photo { get; set; }
}
我已經使用數據源將照片綁定到我的窗體上的PictureBox控件。 表單還使用動態創建的bindingNavigator。
我也寫了一個審計日誌來填充捕捉的改變 程序調用ObjectContext的DetectChanges(),然後
var entries = ObjectContext.ObjectStateManager.GetObjectStateEntries()
其中包含顯示該照片已被修改的條目。
entry.OriginalValues [名]匹配entry.CurrentValues [名]
列是VARBINARY(MAX),在SQL Server中,我已經加載了圖片文件的大小是1Mb的
下,如果我設置的所有列的爲空的錯誤不再出現
我用得到的文件是
private void LoadPhotoButton_Click(object sender, EventArgs e)
{
using (var dlg = new OpenFileDialog())
{
dlg.Filter = "JPEG files |*.jpg";
if (dlg.ShowDialog() == DialogResult.OK)
{
PhotoPictureBox.Image = Image.FromFile(dlg.FileName);
}
}
}
的代碼我注意到here是十六進制零可插入作爲填充字符時這些字段涉及到字符串轉換....綁定可以做到這一點嗎?
如果我從表單中刪除圖片框,甚至將控件綁定爲一個文本框,而不是一個圖片,則行爲是正確的(不是綁定到一個文本框的照片是任何使用)
我我可以通過不直接綁定到圖片框來解決問題。 相反,我只是加載它使用
private void BindingSource_CurrentChanged(object sender, EventArgs e)
{
var obj = (Person) BindingSource.Current;
this.PictureBox.Image = byteArrayToImage(obj.Photo);
}
public Image byteArrayToImage(byte[] byteArrayIn)
{
MemoryStream ms = new MemoryStream(byteArrayIn);
Image returnImage = Image.FromStream(ms);
return returnImage;
}