Entity Framework에서 이미지 변경을 잘못 감지합니까?ObjectStateEntry GetModifiedProperties()가 byte [] 속성의 변경을 잘못 감지했습니다.
"Person"엔티티 클래스는 다음과 같이 정의되어 있습니다.
public class Person
{
public int Id { get; set; }
public byte[] Photo { get; set; }
}
데이터 원본을 사용하여 양식의 PictureBox 컨트롤에 사진을 바인딩했습니다. 폼은 동적으로 생성 된 bindingNavigator도 사용합니다.
또한 캡처 한 변화를 채울 감사 로그를 작성했습니다 절차는 다음 사진이 수정 된 것을 보여주는 항목이 포함되어
var entries = ObjectContext.ObjectStateManager.GetObjectStateEntries()
ObjectContext는 DetectChanges()를 호출합니다.
entry.OriginalValues [이름]과 일치 entry.CurrentValues [이름]
열이 SQL Server의 VARBINARY (MAX)는 내가 모든 설정하면 내가로드 한 사진 파일의 크기가 1MB의
을 받고있다 열 나는 제로 패딩 문자 때와 같이 삽입 할 수 있습니다 진수 here주의 오류가 더 이상
나는 파일이
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);
}
}
}
이다 얻기 위해 사용하는 코드를 발생 널 (null) 없습니다 이 필드들은 문자열 변환과 관련이 있습니다 .... 바인딩이 어떻게 든 그렇게 할 수 있습니까?
내가 양식에서 PictureBox를 삭제, 또는 다음 행동이
I (텍스트 상자에 바인딩 된 사진은 어떤 사용은하지 않는 것이) 올바른 대신에 PictureBox의 텍스트 상자 컨트롤을 바인딩하는 경우 그림 상자에 직접 바인딩하지 않아도 문제를 해결할 수 있습니다. 답 않는 메이크업으로 질문의 끝에서 문서화 - 대신 난 그냥 주위에 내 작품을 사용하고
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;
}