2013-01-17 3 views
0

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; 
    } 

답변

0

사용하여 BindingSource_CurrentChanged 이벤트에로드합니다.

관련 문제