2010-03-30 2 views
1

저는 EDM을 처음 접했으므로 저와 함께하십시오. 내가 만든 EDM에서 바인드 된 DataGridView가있는 Windows 폼이 있습니다. 내 변경 사항을 잘 업데이트하는 방법을 알았지 만 사용자가 문제가있는 새 행을 만드는 경우입니다.엔티티 데이터 모델 및 DataGridView - 새 개체 만들기

나는 수많은 방법과 많은 Google 검색을 시도했지만 지금까지 아무 것도 떠오르지 않았습니다. 여기

데이터가로드되는 방법은 다음과 같습니다

Dim boilerID As Integer = DirectCast(ddlBoiler.SelectedValue, Integer) 
    Dim countryID As Integer = DirectCast(ddlCountry.SelectedValue, Integer) 

    Dim ratings = From r In _Context.Rating _ 
       Where r.Boiler.Boiler_ID = boilerID _ 
       And r.Country.Country_ID = countryID _ 
       Order By r.Sequence _ 
       Select r 

    RatingBindingSource.DataSource = ratings.ToList() 

또한, 나는 지금 정보를 저장하고있어 모두가 다음과 같다 :

Private Sub btnSave_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSave.Click 
    _Context.SaveChanges() 
End Sub 

나는 사용자가 할 수 있도록하려면 그리드의 "새로운 행"기능을 사용하여 버튼을 클릭하고 새 대화 상자를 여는 대신 데이터베이스에 새 항목을 추가하십시오. 이것이 어떻게 성취 될 것인가?

나는 누군가가 볼 필요가있는 경우에 나가 새로운 품목을 추가하는 것을 시도한 몇몇을 포함 할 수있다.

감사합니다.

업데이트 :

For Each dgvr As DataGridViewRow In dgvRatings.Rows 
     If dgvr.DataBoundItem IsNot Nothing AndAlso CType(dgvr.DataBoundItem, Rating).Rating_ID <= 0 Then 

      Dim r As Rating = dgvr.DataBoundItem 
      r.Boiler = ddlBoiler.SelectedItem 
      r.Country = ddlCountry.SelectedItem 

      _Context.AddObject("Rating", r) 
     End If 
    Next 

오류 (_Context.SaveChanges를 호출 할 때 발생합니다()) : 스토어 업데이트, 삽입 또는 삭제 문 여기에 내가 새로운 객체 오류를 추가하기위한 시도 방법 I 수신 중 하나 예상치 못한 행 수 (0)에 영향을줍니다. 엔터티가로드 된 이후에 엔터티가 수정되거나 삭제되었을 수 있습니다. ObjectStateManager 항목을 새로 고칩니다. 당신은 더 완전한 해답을 제공 할 수있는 충분한 정보를 제공하지 않았다 .SaveChanges()

를 호출하지만, 새로운 엔티티를 생성 할 때

답변

1

발견. 내 저장된 프로 시저 매핑에서, 나는 Results_ID를 Results Binding으로 설정했습니다.

RETURN SCOPE_IDENTITY() 
대신

:

SELECT SCOPE_IDENTITY() AS Rating_ID 

나는 내가 삽입 (I는 프로 시저를 실행할 수있는 올바른 알았 이후가 저장된 프로 시저 문제라고 생각하지 않았다 내 저장된 프로 시저에서 나는 다음과 같은 있었다 그 자체로) 기록이 삽입되지 않았다. 결과 집합의 일부로 Rating_ID를 찾지 못했을 때 레코드를 제거한 것 같습니다.

2

당신은, 이것은 생성 된 객체를 삽입 할 레지스터

_Context.MyEntities.AddObject(theNewObject) 

사용할 필요가 그런 식으로 추가하는 것은 그것이 무엇인지에 달려 있습니다.

+0

응답 해 주셔서 감사합니다. 나는 비슷한 것을 시도했다. 내가 받고있는 오류에 대한 내 업데이 트를 참조하십시오. – VinPepe

관련 문제