Проблема вставки нескольких данных в 2 таблицы

у меня проблема с вставкой нескольких данных в две таблицы. Вот мой код

Класс контекста

var userId = Convert.ToUInt32(user.Single(logon => logon.Type == CustomClaimTypes.UserId).Value);
            /*Create access table for insert*/

            var modules = p.Select(collection => new Accountcollection
            {
                AccountId = userId,
                Amount = collection.Amount,
                CashSource = collection.CashSource,
                CollectionDate = collection.CollectionDate,
                CreatedDatetime = DateTime.Now,
                UpdatedDatetime = DateTime.Now,
            }).ToList();

            _context.Accountcollection.AddRange(modules);

            var calendar_event = p.Select(collection => new Accountcalendarevents
            {
                AccountId = userId,
                Subject = collection.CashSource,
                Description = collection.CashSource,
                Start = collection.CollectionDate,
                End = collection.CollectionDate,
                ThemeColor = "blue",
                Isfullday = true,
                Status = "1",
                CreatedBy = userId,
                CreatedDatetime = DateTime.Now,
                UpdatedBy = userId,
                UpdatedDatetime = DateTime.Now
            }).ToList();

            _context.Accountcalendarevents.AddRange(calendar_event);
            _context.SaveChanges();
        }

Это моя коллекционная модель

public partial class Accountcollection
    {
        [Key]
        public long Id { get; set; }
        public long AccountId { get; set; }
        public double? Amount { get; set; }
        public string CashSource { get; set; }
        public DateTime CollectionDate { get; set; }
        public DateTime? CreatedDatetime { get; set; }
        public DateTime? UpdatedDatetime { get; set; }

        //public Accountcalendarevents Accountcalendarevents { get; set; }

        public virtual Accountmaster Account { get; set; }

    }

А это моя модель событий Caldendar Manager.

public class Accountcalendarevents
    {
        [Key]
        public long Id { get; set; }   

        public long AccountId { get; set; }
        public string Subject { get; set; }
        public string Description { get; set; }
        public DateTime Start { get; set; }
        public DateTime End { get; set; }
        public string ThemeColor { get; set; }
        public bool Isfullday { get; set; }
        public string Status { get; set; }
        public long CreatedBy { get; set; }
        public DateTime CreatedDatetime { get; set; }
        public long UpdatedBy { get; set; }
        public DateTime UpdatedDatetime { get; set; }

    }

Проблема в том, что когда я вставляю только 1 данные, все работает нормально, но если я пытаюсь вставить 2 или более, я получаю такое исключение Исключение я получил

Но, когда я прокомментировал

var calendar_event = p.Select(collection => new Accountcalendarevents
            {
                //AccountId = userId, <-- when I comment this line
                Subject = collection.CashSource,
                Description = collection.CashSource,
                Start = collection.CollectionDate,
                End = collection.CollectionDate,
                ThemeColor = "blue",
                Isfullday = true,
                Status = "1",
                CreatedBy = userId,
                CreatedDatetime = DateTime.Now,
                UpdatedBy = userId,
                UpdatedDatetime = DateTime.Now
            }).ToList();

он работает правильно при множественной вставке данных.

Надеюсь, вы помогли мне с этим. Спасибо!

Попробуйте добавить AsNoTracking() после p: p.AsNoTracking().Select(...). Похоже, проблема возникла из-за механизма отслеживания сущностей EF.

Tetsuya Yamamoto 20.03.2019 09:35

Я пробовал это раньше, но там написано, что IEnumerable<CollectionViewModel> does not contain a definition for AsNoTracking @TetsuyaYamamoto

Paul Vincent Doroyan 20.03.2019 09:38

@PaulVincentDoroyan Что такое p в p.Select(..?

TanvirArjel 20.03.2019 09:39

Оба p на нем @TanvirArjel

Paul Vincent Doroyan 20.03.2019 09:40

@PaulVincentDoroyan Это странно! AccountId не является первичным ключом, но все еще жалуется!

TanvirArjel 20.03.2019 09:44

Да :( Я пытаюсь исправить это уже почти неделю. @TanvirArjel

Paul Vincent Doroyan 20.03.2019 09:46

Повторяющееся сообщение: stackoverflow.com/questions/55236492/…

Dimitri 20.03.2019 15:35

Возможный дубликат Получение исключения «Экземпляр объекта типа «X»»

Dimitri 20.03.2019 15:35
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
8
20
0

Другие вопросы по теме