Emrik Dml Ответов: 1

Как обновить данные нескольких моделей в C# MVC


При создании приложения электронной коммерции я пытаюсь обновить покупателя из таблицы покупателя и его адрес из таблицы местоположения. Короче говоря, я пытаюсь обновить несколько моделей с помощью view Model. Меня смущает выражение лица ламды.

Плюс foreachloop здесь создает проблему.
Ошибка говорит "
An exception of type 'System.NotSupportedException' occurred in EntityFramework.SqlServer.dll but was not handled in user code

Additional information: Unable to create a constant value of type 'InventorySystem.Models.Buyer'. Only primitive types or enumeration types are supported in this context.
"

Что я уже пробовал:

Я пытался
var buyers = _context.Buyers.Join(_context.Locations, d => d.LocationId, o => o.id, (d, o) => new { c.Location, c.Buyer }).AsEnumerable();
            var viewModel = from l in _context.Locations
                            join b in _context.Buyers
                            on l.id equals (b.LocationId)
                            select new CustomerFormViewModel { Buyer = c.Buyer, Location = c.Location };
            foreach (var v in buyers)
            {
                v.Buyer.FName = c.Buyer.FName;
                v.Buyer.MName = c.Buyer.MName;
                v.Buyer.LName = c.Buyer.LName;
                v.Buyer.MembershipTypeId = c.Buyer.MembershipTypeId;
                v.Buyer.Verified = c.Buyer.Verified;
                v.Location.address = c.Location.address;
                v.Location.city = c.Location.city;
                v.Location.email = c.Location.email;
                v.Location.phone = c.Location.phone;
                v.Location.zipcode = c.Location.zipcode;

            }
_context.savechanges

Emrik Dml

При выполнении цикла foreach я получаю следующую ошибку
- Исключение типа "система".Исключение notsupportedexception' произошел в и EntityFramework.От SQLServer.dll, но не был обработан в пользовательском коде

Дополнительная информация: невозможно создать постоянное значение типа ' InventorySystem.Модели.Покупатель". В этом контексте поддерживаются только примитивные типы или типы перечислений."

sonymon mishra

на какой строке он показывает ошибку?

1 Ответов

Рейтинг:
1

sonymon mishra

var viewModel = from l in _context.Locations
                            join b in _context.Buyers
                            on l.id equals (b.LocationId)
                            select new  { Buyer = c.Buyer, Location = c.Location };
            foreach (var v in viewModel)
            {
                v.Buyer.FName = c.Buyer.FName;
                v.Buyer.MName = c.Buyer.MName;
                v.Buyer.LName = c.Buyer.LName;
                v.Buyer.MembershipTypeId = c.Buyer.MembershipTypeId;
                v.Buyer.Verified = c.Buyer.Verified;
                v.Location.address = c.Location.address;
                v.Location.city = c.Location.city;
                v.Location.email = c.Location.email;
                v.Location.phone = c.Location.phone;
                v.Location.zipcode = c.Location.zipcode;
            }
            _context.SaveChanges();//This will update your changes to the database