2012-02-05 2 views
3

NHibernate에서 DataGridView까지 Winforms으로 바인딩하는 방법에 대한 자습서가없는 이유는 무엇입니까? 오직 그것을 사용하고 싶습니까? 컬렉션을 DataGridView에 바인딩하는 것이 중요하다는 것을 알고 있습니다. 하지만 CRUD를 만드는 데 문제가 있습니다. 작동DataGridView에 Nhibernate 바인딩

<class name="Employee" table="emplyees" lazy="true"> 
    <id name="id"> 
     <generator class="increment"></generator> 
    </id> 

    <property name="first_name" not-null="true"></property> 
    <property name="last_name" not-null="true"></property> 
    <property name="login" not-null="true"></property> 
    <property name="sid"></property>   
</class> 

코드 :

나는 매핑 데이터베이스 SQLite는 + 테이블이 있습니다. 나는 새 행 삽입 DataGridView를 사용 그리드에 바인딩 할 경우

Employee new_employee = 
    new Employee() { first_name = "test1", last_name = "test3", login = "login1" }; 
session.Save(new_employee); 
session.Commit(); 

는하지만 : session.Commit()

transaction = session.BeginTransaction(); 
employees = (from e in session.Linq<Employee>() select e).ToList<Employee>(); 
this.employeeBindingSource.DataSource = employees; 


private void employeeDataGridView_UserAddedRow(object sender, DataGridViewRowEventArgs e) 
{ 
Employee new_employee = (Employee)this.employeeBindingSource.Current; 
session.Save(new_employee); 
} 

를 오류가 발생합니다 : Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect). 로그에서 내가 NH 그 새 행에 대해 UPDATE를 보내는 것을 알 수있다. 삽입해야합니다.

+0

공용 속성은 => UpperCase 형식이어야합니다. FirstName이 아닌 FirstName. ** 표준 ** 당신이 알고 ... – gdoron

+0

조언 덕분에 – userbb

+0

그리고 대답은? – gdoron

답변

0

행은 Employee 아마 이렇게 NHibernate에 그것을 업데이트해야 "생각", ID를 가지고 있지만, NHibernate에 발견하지 않습니다

업데이트 된 또는 삭제 다른 트랜잭션 (또는 저장되지 않은 값의 매핑이 잘못되었습니다)되었다 그래서 NH 거래는 직원이 다른 거래에서 삭제되었다고 생각합니다.

해당 id 속성에는 기본값이 아닌 값이 있습니다. new_employee.id = 0;

+0

확인. 무슨 일이 일어 났는지 압니다. 나는 session.Save (new_employee)에 의해 던진 예외를 보지 못했다; 내 속성이 null이라고 말합니다. 그래서 저장 전에 빈 문자열을 넣었습니다. 모범 사례가 무엇인지 모르겠지만, null-not checking은 커밋을 연기해야한다고 생각합니다. – userbb

+0

이제 작동합니다. 나는 커밋 한 후에 새로운 기록을 본다. NH가 INSERT를 보낸 이유와 같은 레코드를 UP 한 후 궁금합니다. – userbb

+0

@userbb. 이 업데이트는 다른 문제입니다. [여기] (http://stackoverflow.com/questions/4883900/what-does-inverse-and-cascade-means-in-nhibernate) 게시물을 읽어보십시오. 도움이되기를 바랍니다. – gdoron

관련 문제