Рейтинг:
5
F-ES Sitecore
При сохранении изменений обратно просто делайте их на отдельных классах. Поэтому, если у вас есть две объединенные таблицы, запрос вернет родительский объект и дочерний объект, и вы просто обновите свойства этих классов, так что если это заказы и строки заказов;
var order = YourQueryToGetTheOrderData;
order.Status = "Complete";
order.OrderLine[0].LastUpdated = DateTime.Now;
// now save your database context and both Order and OrderLine will be updated
RuiBarreiros
Но можно ли создать анонимный запрос типа LINQ? Поскольку я использую шаблон MVVM, я узнал, что должен привязываться к ObservableCollections, но я не могу создать ObservableColletion из анонимного запроса LINQ. Так что же мне делать?
RuiBarreiros
Спасибо! Итак,если в моей БД есть таблица Orders и таблица Customer и я хочу получить свойства как из таблиц Orders, так и из таблиц Customers, я бы создал класс OrderInfo с нужными мне свойствами, а затем создал бы экземпляр этого класса в результате запроса LINQ, чтобы создать ObservableCollection.
Это правильно? Как бы я тогда обновил базу данных в этой ситуации? Класс OrderInfo не принадлежит DBContext, в котором находятся классы Orders и Customers...Извините, если это сбивает с толку, но все это для меня ново...
F-ES Sitecore
Если вы не можете получить ваши коллекции ObservableCollection работает от клиента класса и необходимость создания OrderInfo класса, затем, когда вы приходите, чтобы обновить данные в OrderInfo вам необходимо повторно получить соответствующие сведения от ВФ, так что вы получите соответствующие поддержки и того, и обновить эти объекты, а затем сохранить контекст. Это не эффективно, так как это означает, что вы не можете просто обновить, вы должны выбрать и затем обновить, но это EF для вас.
RuiBarreiros
Ладно, понял! Спасибо! Однако еще один вопрос: было бы более эффективно, если бы я создал представление в SQL (например, используя SMSS), а затем добавил Это представление в свой EF, чтобы я мог непосредственно обновить DBContext? Сработает ли это?
F-ES Sitecore
TBH "правильная" вещь - это использовать пользовательскую сущность, которая включает клиента и заказ в один класс. Из коробки EF работает, создавая сущность из таблицы, но это именно то, что вы получаете, когда перетаскиваете ее. Вы можете создавать свои собственные сущности, поэтому вы можете определить CustomerOrder как сущность, которая имеет определенные поля от Customer и определенные поля от Order. Ваши запросы вернут этот объект из select, и позже вы сможете прикрепить его к контексту, чтобы обновить. Вам, вероятно, придется покопаться в некоторых статьях MSDN, чтобы узнать больше информации об этом, прошло уже некоторое время с тех пор, как я сам смотрел на это.
RuiBarreiros
Отлично! Большое спасибо! Это должно указать мне верное направление! Почет