하위 항목과 함께 항목 저장

휴고

나는 이틀 동안 이것으로 어려움을 겪고 있으며 약간의 도움이 필요합니다. 또한 Google 및 StackOverFlow를 통해 많은 검색을 수행했지만 해결책을 찾지 못했습니다.

나는 노력하고 있다고 믿는 것은 단순한 일이지만 나는 일할 수 없습니다.

EntityFramework를 사용하여 "tblAnneeFinanciere"라는 테이블에서 레코드를 변경하고 있으며 "tblAnneeFinanciere.tblPeriodeFinanciere"의 하위 레코드를 NavigationPropoerty에 추가하고 있습니다. 그러나 모든 정보를 저장하기 위해 SaveChanges 컨텍스트 메서드를 가져올 수 없습니다.

다른 오류에 도달하기 위해 다른 시나리오를 시도했습니다.

여기 내 코드 스 니펫

 Public Sub Test()
        Dim AnneesFine = New List(Of tblAnneeFinanciere)

        Using database = Informat.WPF.EF.MaitreDBEntities.GetEFConnections()

            Dim query = From data In database.tblAnneeFinanciere
                        Where data.ID = 7
                        Select data


            AnneesFine = query.ToList
        End Using

        Dim ChangedAnneeFina = AnneesFine.First
        ChangedAnneeFina.Descr = Date.Now.ToLongDateString
        ChangedAnneeFina.Poincon = Date.Now

        Dim addedRecord = New tblPeriodeFinanciere() With {
                                                            .ID = 1,
                                                            .Descr = "Test#1",
                                                            .DescrEn = "Test#1",
                                                            .NoPeriode = 10,
                                                            .pCieID = ChangedAnneeFina.CieID.Value,
                                                            .DateDebut = Date.Now,
                                                            .DateFin = Date.Now,
                                                            .pAnneeFinanciereID = ChangedAnneeFina.ID,
                                                            .Poincon = Date.Now
                                                        }

        ChangedAnneeFina.tblPeriodeFinanciere.Add(addedRecord)

        Using database = Informat.WPF.EF.MaitreDBEntities.GetEFConnections()
            ''*************************************************************
            ''First attempt
            Dim obj = database.GetObjectByKey(ChangedAnneeFina.EntityKey)
            obj = ChangedAnneeFina

            ''*************************************************************
            'Second attempt

            database.tblAnneeFinanciere.ApplyCurrentValues(ChangedAnneeFina) ' Value are correctly applied
            database.SaveChanges() '' Saving tblAnneeFinanciere work correctly but child table 'tblPeriodeFinanciere' is not updated

            '*************************************************************
            'third attempt
            ' database.tblAnneeFinanciere.ApplyCurrentValues(ChangedAnneeFina) ' Value are correctly applyed
            Dim obj2 = database.GetObjectByKey(ChangedAnneeFina.EntityKey)
            obj2 = ChangedAnneeFina

            database.tblPeriodeFinanciere.AddObject(ChangedAnneeFina.tblPeriodeFinanciere.First)

            '*************************************************************


            database.SaveChanges()

        End Using


    End Sub
  • 내 첫 번째 시도는 마녀가 변경된 엔티티를 컨텍스트에 연결된 참조에 할당하고 있으며 엔티티는 올바르게 저장되지만 "tblAnneeFinanciere.tblPeriodeFinanciere"의 하위 레코드가 아닙니다.

  • 두 번째 시도에서는 ApplyCurrentValues ​​호출을 사용하여 저장할 정보를 전송하고 있지만 예외가 발생 합니다. 제공된 개체의 키와 일치하는 키가있는 개체를 ObjectStateManager에서 찾을 수 없습니다. 제공된 개체의 키 값이 변경 사항을 적용해야하는 개체의 키 값과 일치하는지 확인합니다. 나는 각 시도를 동시에 실행하지 않았으며 각 시도는 개별적으로 실행되었습니다.

  • 세 번째 시도에서 마녀는 첫 번째 Do save the main table "tblAnneeFinanciere"와 약간 비슷하지만 엔티티가 "tblPeriodeFinanciere"에 추가되면 The ObjectContext 인스턴스가 삭제되어 더 이상 사용할 수 없다는 예외가 발생합니다 . 연결이 필요한 작업에 사용됩니다.

내가 뭘 잘못 했어, 어디로 가야 돼?

내 작업 환경은

윈도우 7; Visual Studio 2013; 대상 프레임 워크 버전 : 4.0; EntityFramework 버전 : 4.1

JotaBe

다중 계층 애플리케이션에서 EF를 사용하는 경우 엔터티는 일반적으로 변경 사항을 추적하는 컨텍스트에서 제거됩니다.

즉, 컨텍스트를 사용하고 속성을 수정하고 자식을 추가하는 경우 컨텍스트는 이러한 변경 사항을 추적 SaveChanges하고 수행 할 작업을 알고 있습니다.

그러나 다중 계층 앱이있는 경우 엔터티는 컨텍스트에서 제거됩니다.

해야 할 일은 변경 사항을 직접 추적하는 것입니다. 그런 다음 새 컨텍스트를 인스턴스화하고 엔터티를 컨텍스트에 연결하고 연결된 엔터티와 모든 하위 항목의 상태를 설정해야합니다.

entty를 컨텍스트에 연결하기 위해 두 가지 다른 작업을 수행 할 수 있습니다.

  • 항목을 컬렉션에 추가하면을 사용 Add()하면 모든 항목의 상태가로 설정되고 Added변경 사항을 저장하면 모두 새 항목 인 것처럼 처리됩니다.
  • 을 사용하여 엔티티를 첨부합니다 Attach(). 이 경우 변경 사항을 저장할 때 수행 할 작업을 알 수 있도록 엔터티의 상태를 설정해야합니다.

분리 된 엔티티 추가의 예 :

ctx.Set<TEntity>().Add(newEntity);
ctx.SaveChanges();

이것은 모든 개체가 추가 된 것처럼 전체 트리를 연결합니다.

연결이 끊긴 엔티티 수정의 예 :

var attached = ctx.Set<TEntity>().Attach(changedEntity);
ctx.Entry(attached).State = EntityState.Modified;
ctx.SaveChanges();

이것은 모든 개체가 변경되지 않은 것처럼 전체 트리를 연결합니다.

변경 사항을 추적하고 객체를 컨텍스트에 연결 한 후 다시 설정해야합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

사용자 정의 입력을 미리 정해진 항목 목록과 함께 저장하는 방법

분류에서Dev

데이터 저장소 항목에 항상 상위 항목이 있어야 함

분류에서Dev

항목 위젯과 함께 tkinter 타이머 사용

분류에서Dev

항목 위젯과 함께 tkinter 타이머 사용

분류에서Dev

목록 항목 선택과 함께 작동하지 않는 chnage () 함수

분류에서Dev

DbContext가 여러 항목을 저장하지 못함

분류에서Dev

두 항목을 함께 사용하는 항목 빈도

분류에서Dev

여러 항목에 대한 localstorage와 함께 'Checked'확인란 저장

분류에서Dev

ListView / GridView 항목과 함께 Storyboard를 사용하는 방법이 있습니까?

분류에서Dev

테스트 항목과 함께 작동하지 않는 일대 다 연결

분류에서Dev

removeValue ()로 Firebase 하위 항목을 삭제할 때 앱이 IndexOutOfBoundsException과 함께 비정상 종료됩니다.

분류에서Dev

Android에서이 활동과 함께 Theme.AppCompat 테마 (또는 하위 항목)를 사용해야합니다.

분류에서Dev

dbml을 사용하여 항목 소스를 통해 WPF에 저장 프로 시저 함수 결과를 전달하려는 문제

분류에서Dev

Raven DB는 배열 항목의 하위 집합을 필터링하고 가장 저렴한 필터 결과 항목을 정렬합니다.

분류에서Dev

Laravel 4.2 복제 (하위 항목 포함)

분류에서Dev

옵저버 블과 함께 다음 항목 또는 오류가 도착할 때까지로드를 표시하는 방법은 무엇입니까?

분류에서Dev

Linq-함수를 통해 각 항목을 실행 한 다음 함수 결과가 가장 높은 항목을 선택하는 방법

분류에서Dev

항상 "압축 된"항목과 함께 리본 명령 표시

분류에서Dev

CheckedListBox 체크 항목 저장

분류에서Dev

모든 하위 항목이 포함 된 목록에서 항목 찾기

분류에서Dev

여러 항목을 함께 수정하기위한 eBay API 호출

분류에서Dev

Google 데이터 저장소 쿼리에서 하위 항목 속성의 항목 필터링

분류에서Dev

목록에서 상위 / 하위 관계가있는 항목을 함께 정렬하는 방법

분류에서Dev

행의 각 항목을 반복하고 다른 행의 각 항목과 비교 한 다음 결과를 새 column_python에 저장합니다.

분류에서Dev

항목을 함께 유지하면서 여러 항목 목록의 문자열 분할

분류에서Dev

Laravel ManyToMany 관계 항목 합계를 저장할 위치는?

분류에서Dev

항목 위젯 tkinter에서 데이터 저장

분류에서Dev

나는 목록과 튜플과 함께 Dictionary를 사용하고 있는데, 어떻게 목록의 항목을 읽을 수 있습니까?

분류에서Dev

Vapor과 함께 사용하기 위해 MariaDB에 UUID 저장

Related 관련 기사

  1. 1

    사용자 정의 입력을 미리 정해진 항목 목록과 함께 저장하는 방법

  2. 2

    데이터 저장소 항목에 항상 상위 항목이 있어야 함

  3. 3

    항목 위젯과 함께 tkinter 타이머 사용

  4. 4

    항목 위젯과 함께 tkinter 타이머 사용

  5. 5

    목록 항목 선택과 함께 작동하지 않는 chnage () 함수

  6. 6

    DbContext가 여러 항목을 저장하지 못함

  7. 7

    두 항목을 함께 사용하는 항목 빈도

  8. 8

    여러 항목에 대한 localstorage와 함께 'Checked'확인란 저장

  9. 9

    ListView / GridView 항목과 함께 Storyboard를 사용하는 방법이 있습니까?

  10. 10

    테스트 항목과 함께 작동하지 않는 일대 다 연결

  11. 11

    removeValue ()로 Firebase 하위 항목을 삭제할 때 앱이 IndexOutOfBoundsException과 함께 비정상 종료됩니다.

  12. 12

    Android에서이 활동과 함께 Theme.AppCompat 테마 (또는 하위 항목)를 사용해야합니다.

  13. 13

    dbml을 사용하여 항목 소스를 통해 WPF에 저장 프로 시저 함수 결과를 전달하려는 문제

  14. 14

    Raven DB는 배열 항목의 하위 집합을 필터링하고 가장 저렴한 필터 결과 항목을 정렬합니다.

  15. 15

    Laravel 4.2 복제 (하위 항목 포함)

  16. 16

    옵저버 블과 함께 다음 항목 또는 오류가 도착할 때까지로드를 표시하는 방법은 무엇입니까?

  17. 17

    Linq-함수를 통해 각 항목을 실행 한 다음 함수 결과가 가장 높은 항목을 선택하는 방법

  18. 18

    항상 "압축 된"항목과 함께 리본 명령 표시

  19. 19

    CheckedListBox 체크 항목 저장

  20. 20

    모든 하위 항목이 포함 된 목록에서 항목 찾기

  21. 21

    여러 항목을 함께 수정하기위한 eBay API 호출

  22. 22

    Google 데이터 저장소 쿼리에서 하위 항목 속성의 항목 필터링

  23. 23

    목록에서 상위 / 하위 관계가있는 항목을 함께 정렬하는 방법

  24. 24

    행의 각 항목을 반복하고 다른 행의 각 항목과 비교 한 다음 결과를 새 column_python에 저장합니다.

  25. 25

    항목을 함께 유지하면서 여러 항목 목록의 문자열 분할

  26. 26

    Laravel ManyToMany 관계 항목 합계를 저장할 위치는?

  27. 27

    항목 위젯 tkinter에서 데이터 저장

  28. 28

    나는 목록과 튜플과 함께 Dictionary를 사용하고 있는데, 어떻게 목록의 항목을 읽을 수 있습니까?

  29. 29

    Vapor과 함께 사용하기 위해 MariaDB에 UUID 저장

뜨겁다태그

보관