Продолжив после моего первоначального WebAPI фильтрации и пейджинговая проекция дилеммыBreeze WebAPI Update Проекция
Breeze $filter projections нити
Я сейчас пытаюсь обновить бэкэнд базу данных с небольшим успехом.
Давать факт, что я:
public IQueryable<ConsigneDTO> Consignees(string refname)
{
IQueryable<ConsigneDTO> q = this.db.Consignes
.Where(x => x.Refname == refname)
.Select(f => new ConsigneDTO {Refname = f.Refname, Consignee = f.Consignee, Address1 = f.Address1, Address2 = f.Address2, Address3 = f.Address3});
return q;
}
Что самый простой способ поместить эти данные обратно из Breeze?
Я вижу, что мои измененные данные возвращаются в обоих переопределениях
protected override bool BeforeSaveEntity(EntityInfo entityInfo)
{
}
protected override Dictionary<Type, List<EntityInfo>> BeforeSaveEntities(Dictionary<Type, List<EntityInfo>> saveMap)
{
}
Но не легкий путь, чтобы подтолкнуть их в основной контекст, который является службой WCF, вытекающие из Data.Services.Client.DataServiceContext.
Как я называю
Context.UpdateChanges(EntityInfo);
или
Context.UpdateChanges(SaveMap);
Особенно принимая во внимание EntityInfo и SaveMap содержит DTO?
Должен ли я полностью игнорировать механизм SaveChanges() и выполнять собственные вызовы CRUD? Я даже не вижу хороших не-бризных примеров по обновлению прогнозов, которые заставляют меня чувствовать, что это глубоко укоренилось.
Как объяснялось в предыдущем разделе, я могу многое изменить в этом проекте. Единственные проблемы, с которыми я столкнулся, - это базы данных на другом сервере и столбцы, которые не могут быть общедоступными, а мой единственный способ для таблиц - EF5.
Я решил аккуратно обернуть EF, используя OData-v3/WCF-Data-Services, и получить доступ к ним с моего контроллера бриза на веб-сервере.
До сих пор чтение \ запрос \ фильтрация и пейджинг отлично работают на SPA, но только с R «C_UD», я более чем готов переработать этот проект.
С наилучшими пожеланиями Майк
Я собираюсь попытаться быть на одном уровне с вами. Вы говорите, что у вас есть служба WCF, с которой вы получаете данные, - что вы пытаетесь сделать здесь? Вы пытаетесь отправить данные обратно в метод GET? Надеюсь, что ... Если вы пытаетесь выполнить сохранение данных в службу WCF, у вас есть метод UPDATE или POST? Вы пытались перехватить сохранение и использовать эти методы? Если вы используете службу WCF и хотите, чтобы Breeze смог переопределить ваш метод GET с помощью POSTing данных, я чувствую, что вам нужно сделать немного больше исследований в службах WCF. Пожалуйста, поймите, что я не имею никакого отношения к команде Бриз ... –
@PWKad Оцените усилия :) Я знаком с WCF (но всегда изучаю), и я могу использовать свой сервер данных с моего контроллера с помощью .Select() ; q.Address3 = "Foo"; Context.UpdateObject (кв); Context.SaveChanges; Моя проблема больше связана с Breeze. Breeze возвращает мне класс EntityInfo в BeforeSaveEntity или SaveMap и SaveBundle в других переопределениях. Ни один из них, похоже, не может перейти к UpdateObject(), и даже если бы мог, это DTO из-за проекции Select(), и я не думаю, что WCF будет знать, что с ним делать. Я собираюсь удалить проекцию в качестве теста и преодолеть барьер. – Mike
Я обновил исходный вопрос, чтобы указать больше на Breeze Overrides и DTO - Спасибо снова – Mike