ICollection에서 마지막 항목을 삭제할 수 없습니다.

신조

컬렉션에서 마지막 항목을 삭제하려고하는데 작동하지 않습니다. 먼저 MVC 4와 EF 코드를 사용하고 있습니다. 모든 뷰와 컨트롤러를 생성하고 각 확인란이 컬렉션 유형의 하나의 개체에 대한 확인란이있는 모듈을 추가합니다.

이것은 내 모델입니다.

{
    public class Efekt
    {
        public int ID { get; set; }
        public string Symbol { get; set; }
        public string Typ { get; set; }

        [DataType(DataType.MultilineText)]
        public string Opis { get; set; }

        [DataType(DataType.MultilineText)]
        public string Odnosnik
        {
            get
            {
                (...)
            }

           // set;
        }

        public virtual ICollection<Obszarowe> EfektyObszarowe { get; set; }
        public virtual ICollection<Przedmiot> Przedmioty { get; set; }

        public Efekt(){

        }

        public Efekt(string symbol,string opis,string odnosnik){

           (...)
        }
    }
}


{
    public class Obszarowe
    {
        public int ID { get; set; }
        public string Symbol { get; set; }
        public string Typ { get; set; }

        [DataType(DataType.MultilineText)]
        public string Opis { get; set; }

        [DataType(DataType.MultilineText)]
        public string Odnosnik
        {
            get
            {
                (...)
            }

            // set;
        }

        public virtual ICollection<Efekt> EfektyKierunkowe { get; set; }

        public Obszarowe(){

        }

        public Obszarowe(string symbol, string opis, string odnosnik)
        {

            (...)
        }
    }
}

efektcontroller의 편집 기능

 public ActionResult Edit(int id = 0)
        {
            Efekt efekt = db.Efekts.Find(id);
            if (efekt == null)
            {
                return HttpNotFound();
            }
            EfektyObszarowe(efekt);
            return View(efekt);
        }

        private void EfektyObszarowe(Efekt efekt)
        {
            var allObszarowe = db.EfektyObszarowe;
            var kierunkoweObszarowe = new HashSet<int>(efekt.EfektyObszarowe.Select(c => c.ID));
            var viewModel = new List<KierunkoweObszarowe>();
            foreach (var obszar in allObszarowe)
            {
                viewModel.Add(new KierunkoweObszarowe
                {
                    ID = obszar.ID,
                    Symbol = obszar.Symbol,
                    Wybrany = kierunkoweObszarowe.Contains(obszar.ID)
                });
            }
            ViewBag.Courses = viewModel;
        }

        //
        // POST: /Efekt/Edit/5

        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Edit(int id , string[] selectedCourses)
        {
            Efekt efekt = db.Efekts.Find(id);

            if (ModelState.IsValid)
            {
                UpdateObszarowe(selectedCourses, efekt);

                db.Entry(efekt).State = EntityState.Modified;
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            EfektyObszarowe(efekt);
            return View(efekt);
        }

        private void UpdateObszarowe(string[] selectedCourses, Efekt instructorToUpdate)
        {
            if (selectedCourses == null)
            {
                instructorToUpdate.EfektyObszarowe = new List<Obszarowe>();
                return;
            }

            var selectedCoursesHS = new HashSet<string>(selectedCourses);
            var instructorCourses = new HashSet<int>
                (instructorToUpdate.EfektyObszarowe.Select(c => c.ID));
            //var temp = db.Efekts.Find(instructorToUpdate.ID);
           ///////// Obszarowe ob;

            foreach (var course in db.EfektyObszarowe)
            {
                if (selectedCoursesHS.Contains(course.ID.ToString()))
                {
                 if (!instructorCourses.Contains(course.ID))
                {
                     instructorToUpdate.EfektyObszarowe.Add(course);
                /*ob = db.EfektyObszarowe.Find(Int32.Parse(course));
                        instructorToUpdate.EfektyObszarowe.Add(ob);
                */

                    }
                }
                else
                {
                    if (instructorCourses.Contains(course.ID))
                    {
                        instructorToUpdate.EfektyObszarowe.Remove(course);
                    }   
                }
            }
        }

"Obszarowe"체크 박스를 선택 해제해도 괜찮습니다. 컬렉션에서 항목을 삭제하면 체크 된 개체 만 표시되지만 모두 선택 해제하면 차이가 없습니다.

여기에 이미지 설명 입력

게르트 아놀드

당신은 ...

instructorToUpdate.EfektyObszarowe = new List<Obszarowe>();

하지만 당신 instructorToUpdate은 ...

Efekt efekt = db.Efekts.Find(id);

이는 EfektyObszarowe컬렉션이로드되지 않으므로 변경 사항을 추적하지 않음을 의미합니다 . 따라서 다음을 가져올 때 컬렉션을로드해야합니다 Efekt.

Efekt efekt = db.Efekts.Include(e => e.EfektyObszarowe).Single(e.ID == id);

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

React에서 목록 항목을 삭제할 수 없습니다.

분류에서Dev

목록 Xcode에서 항목을 삭제할 수 없습니다.

분류에서Dev

Listview는 마지막 항목을 표시 할 수 없습니다.

분류에서Dev

CosmosDB에서 항목을 삭제할 수 없습니다.

분류에서Dev

React Native FlatList에서 항목을 삭제할 수 없습니다.

분류에서Dev

QList <QByteArray *>에서 항목을 삭제할 수 없습니다.

분류에서Dev

Laravel, 모델에서 항목을 삭제할 수 없습니다.

분류에서Dev

바닥 글이있는 Recyclerview는 마지막 항목을 삭제할 수 없습니다.

분류에서Dev

mysql에서 마지막 행을 검색 할 수 없습니다.

분류에서Dev

목록보기에서 마지막 항목을 삭제하고 싶습니다.

분류에서Dev

연결 목록에서 첫 번째 항목을 삭제할 수 없습니다.

분류에서Dev

목록 상자에서 두 개의 동일한 항목 중 마지막 항목을 선택할 수 없습니다.

분류에서Dev

휴지통에서 파일을 삭제할 수 없습니다.

분류에서Dev

GridLayout의 RecyclerView가 마지막 항목을 표시 할 수 없습니다.

분류에서Dev

마지막 발신자가 삭제되었지만 수신자가 여전히 활성 상태 일 때 Tokio MPSC에 항목을 보존 할 수 있습니까?

분류에서Dev

React의 배열에서 항목을 삭제할 수 없습니다.

분류에서Dev

MongoDB는 배열에서 항목을 삭제할 수 없습니다.

분류에서Dev

할 일 목록에서 li을 삭제할 수 없습니다.

분류에서Dev

.cpp를 Xcode의 Project에 복사 할 수 없습니다. 또한 항목을 삭제할 수 없습니다.

분류에서Dev

마지막 줄에서 if의 else 부분을 실행할 수 없습니다.

분류에서Dev

Ionic Select에서 마지막 옵션을 미리 선택할 수 없습니다.

분류에서Dev

데이터가 삽입 된 다른 행이없는 양식의 테이블에서 마지막 행을 어떻게 삭제할 수 있습니까?

분류에서Dev

HighChart에서 다른 막대 항목 클릭에 다른 값을 지정할 수 없습니다.

분류에서Dev

Firebase에 저장된 문자열에서 마지막 문자를 삭제할 수 없습니다.

분류에서Dev

SwiftUI : 목록에서 행을 삭제할 수 없습니다.

분류에서Dev

마스터 뷰 컨트롤러에서 행을 삭제할 수 없습니다.

분류에서Dev

R에서 xlsx 패키지로 가져 오기는 NA, <NA> 및 빈 항목을 제공하며 NA 값을 삭제할 수 없습니다.

분류에서Dev

recyclerview에서 이전 항목을 삭제할 수 있습니까?

분류에서Dev

목록보기에서 선택한 항목을 삭제할 수 없습니다 (sqlite의 값).

Related 관련 기사

  1. 1

    React에서 목록 항목을 삭제할 수 없습니다.

  2. 2

    목록 Xcode에서 항목을 삭제할 수 없습니다.

  3. 3

    Listview는 마지막 항목을 표시 할 수 없습니다.

  4. 4

    CosmosDB에서 항목을 삭제할 수 없습니다.

  5. 5

    React Native FlatList에서 항목을 삭제할 수 없습니다.

  6. 6

    QList <QByteArray *>에서 항목을 삭제할 수 없습니다.

  7. 7

    Laravel, 모델에서 항목을 삭제할 수 없습니다.

  8. 8

    바닥 글이있는 Recyclerview는 마지막 항목을 삭제할 수 없습니다.

  9. 9

    mysql에서 마지막 행을 검색 할 수 없습니다.

  10. 10

    목록보기에서 마지막 항목을 삭제하고 싶습니다.

  11. 11

    연결 목록에서 첫 번째 항목을 삭제할 수 없습니다.

  12. 12

    목록 상자에서 두 개의 동일한 항목 중 마지막 항목을 선택할 수 없습니다.

  13. 13

    휴지통에서 파일을 삭제할 수 없습니다.

  14. 14

    GridLayout의 RecyclerView가 마지막 항목을 표시 할 수 없습니다.

  15. 15

    마지막 발신자가 삭제되었지만 수신자가 여전히 활성 상태 일 때 Tokio MPSC에 항목을 보존 할 수 있습니까?

  16. 16

    React의 배열에서 항목을 삭제할 수 없습니다.

  17. 17

    MongoDB는 배열에서 항목을 삭제할 수 없습니다.

  18. 18

    할 일 목록에서 li을 삭제할 수 없습니다.

  19. 19

    .cpp를 Xcode의 Project에 복사 할 수 없습니다. 또한 항목을 삭제할 수 없습니다.

  20. 20

    마지막 줄에서 if의 else 부분을 실행할 수 없습니다.

  21. 21

    Ionic Select에서 마지막 옵션을 미리 선택할 수 없습니다.

  22. 22

    데이터가 삽입 된 다른 행이없는 양식의 테이블에서 마지막 행을 어떻게 삭제할 수 있습니까?

  23. 23

    HighChart에서 다른 막대 항목 클릭에 다른 값을 지정할 수 없습니다.

  24. 24

    Firebase에 저장된 문자열에서 마지막 문자를 삭제할 수 없습니다.

  25. 25

    SwiftUI : 목록에서 행을 삭제할 수 없습니다.

  26. 26

    마스터 뷰 컨트롤러에서 행을 삭제할 수 없습니다.

  27. 27

    R에서 xlsx 패키지로 가져 오기는 NA, <NA> 및 빈 항목을 제공하며 NA 값을 삭제할 수 없습니다.

  28. 28

    recyclerview에서 이전 항목을 삭제할 수 있습니까?

  29. 29

    목록보기에서 선택한 항목을 삭제할 수 없습니다 (sqlite의 값).

뜨겁다태그

보관