среда, 30 сентября 2015 г.

Entity Framework: Reload newly created object / Reload navigation properties

Environment

ASP.NET MVC 4 application, EntityFramework 6

Problem


Unable to reload the updated properties of an object from the database, and navigation properties.

Scenario

I do processing Post-request for object creation in the controller's action .
The object itself passed in the Action as parameter.

I usually do this sequence

...
check values
save object
additional actions after saving
...

From the client side a new object comes "clean" / without navigational properties.
I add it to the context and save.
Once saved, I want to do the extra processing in which I need the navigation properties,
but the problem is that EF caches object and reloading does not update the navigation properties. They remain empty.

Solution

Before you read the object from database it must be disconnected from the context.

I got to do it this way:

public void Detach (T entity)
{
            ((IObjectContextAdapter) _db) .ObjectContext.Detach (entity);
}

The solution found here
Entity Framework Code First - No Detach () method on DbContext
http://stackoverflow.com/questions/4168073/entity-framework-code-first-no-detach-method-on-dbcontext

Related Links


Entity Framework Code First - No Detach() method on DbContext
http://stackoverflow.com/questions/4168073/entity-framework-code-first-no-detach-method-on-dbcontext

Reload an entity and all Navigation Property Association- DbSet Entity Framework
http://stackoverflow.com/questions/9081244/reload-an-entity-and-all-navigation-property-association-dbset-entity-framework

How to update an entity's navigation properties in Entity Framework
http://stackoverflow.com/questions/10542209/how-to-update-an-entitys-navigation-properties-in-entity-framework

Entity Framework POCO - Refresh a navigation property
http://stackoverflow.com/questions/3839166/entity-framework-poco-refresh-a-navigation-property

Entity Framework Перезагрузить только что созданный объект/перегрузить навигационные свойства

Окружение

ASP.NET MVC 4 приложение, EntityFramework 6

Проблема

Не получается перезагрузить обновленные свойства объекта из базы данных и навигационные свойства


Сценарий использования

Обрабатываю в контроллере Post-запрос на создание объекта. Объект передается параметром в Экшене.
как обычно я делаю

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

С клиента новый объект приходит "чистым"/ т.е. без навигационных свойств.
Его я и добавляю в контекст и сохраняю.
После сохранения я хочу провести дополнительную обработку в которой мне нужны навигационные свойства, но проблема в том, что EF кеширует объект и повторная загрузка не приводит к обновлению навигационных свойств. Они остаются пустыми.

Решение

Перед тем как считать обновленный объект его нужно отсоединить от контекста.

У меня получилось сделать это так:

public void Detach(T entity)
{
            ((IObjectContextAdapter)_db).ObjectContext.Detach(entity);
}

Решение нашел здесь
Entity Framework Code First - No Detach() method on DbContext
http://stackoverflow.com/questions/4168073/entity-framework-code-first-no-detach-method-on-dbcontext

Ссылки по теме


Entity Framework Code First - No Detach() method on DbContext
http://stackoverflow.com/questions/4168073/entity-framework-code-first-no-detach-method-on-dbcontext

Reload an entity and all Navigation Property Association- DbSet Entity Framework
http://stackoverflow.com/questions/9081244/reload-an-entity-and-all-navigation-property-association-dbset-entity-framework

How to update an entity's navigation properties in Entity Framework
http://stackoverflow.com/questions/10542209/how-to-update-an-entitys-navigation-properties-in-entity-framework

Entity Framework POCO - Refresh a navigation property
http://stackoverflow.com/questions/3839166/entity-framework-poco-refresh-a-navigation-property



понедельник, 28 сентября 2015 г.

.NET приложение. Ошибка: Unable to load one or more of the requested types...

После публикации ASP.NET MVC приложения получил ошибку:

Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information. 

Причем локально ошибка не повторялась

Как выяснить причину

После исследования в интернете оказалось, что эта ошибка обычно возникает если
в проекте появились новые типы (сборки), которые не были подгружены при публикации.

чтобы выяснить, чего именно не хватает приложению, я добавил такой дополнительный код на страницу обработки ошибок
(у меня в приложении была настроена специальная страница обработки ошибок, поэтому код я написал сразу в ней и код на razor. но вы можете адаптировать этот код в чистый C# ):

@if (Model.Exception is ReflectionTypeLoadException)
    {
        var rtlexc = Model.Exception as ReflectionTypeLoadException;
        if (rtlexc.LoaderExceptions != null) {
            foreach (var rtlexcitem in rtlexc.LoaderExceptions)
            {
                <div>
                    @rtlexcitem.Message
                </div>
            }
        }
        
    }

Этот код вывел меня на сборку которая не была подгружена в проект
Оказывается члены команды добавили новую длл-ку, но не установили ей свойство копироваться локально.

Как решать

Проект/References/Нужная сборка/Свойства/Copy Local = true

Смотрите также

тема на stackoverflow

Error message 'Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.'




воскресенье, 27 сентября 2015 г.

Отзыв о книге: Андрей Иванов Идеальный поиск в Интернете глазами пользователя

Книга "Идеальный поиск в Интернете глазами пользователя" Андрей Иванов - купить книгу ISBN 978-5-459-00333-8 с доставкой по почте в интернет-магазине OZON.ruКнига "Идеальный поиск в Интернете глазами пользователя" Андрей Иванов - купить книгу ISBN 978-5-459-00333-8 с доставкой по почте в интернет-магазине OZON.ru

Сразу начну с плохого.

Что очень не понравилось


Книга очень натягивает объем: часто автор добавляет малоинформативные таблицы и скриншоты, которые могут занимать подряд несколько страниц. Похоже автор хотел подзаработать на популярности другой книги Оптимизация и продвижение сайтов в поисковых системах, которую он писал совместно с Ашмановым.

Но, честно говоря, искусственная растянутость и маленькое количество действительно полезного материала очень бросается в глаза.

Это для меня было большим минусом.


Какие мысли мне запомнились


Влияние поисковиков на интернет-контент

Поисковики говорят, что только отражают состояни интернета, но на самом деле влияют на его содержимое, так как множество SEO оптимизаторов ведут войну за появление на первой странице поиска, соответсвенно изменяют контет в угоду поисковикам.

Виды запросов

Навигационные: найти сайт такой-то организации
Транзакционные: купить/заказать что-то
Информационные: найти информацию о том-то

Критерии оценки поисковой выдачи

Осмысленность, Авторизованность(инфо с официальных сайтов), Авторитетность, Полнота,Структура, Оформление.

Проблемы поисковиков.

Основная проблема - они пока не мыслят. Соответственно иногда, бывает, "не понимают", что именно хочет получить пользователь в ответ на свой запрос.

Выводы

В конце книги есть такая фраза:
Мы обещали вам, что вы будете лучше представлять к чему идет сетевой поиск и каковы критерии качества поисковой выдачи с точки зрения её потребителей.

Ну что ж: автор свое обещание выполнил.
Но, если задам себе вопрос: сильно ли мне помогла книга в практическом продвижении сайта -скажу: "Не очень".

Содержимое  книги можно охарактеризовать как общие размышления простым языком о технических вопросах в целом.


Нужно ли читать: Только если хотите побольше узнать про теорию поисковых систем.

Моя оценка: 2 из 5
(Если же нужна хорошая практическая книга по поисковой оптимизации - рекомендую книгу: Оптимизация и продвижение сайтов в поисковых системах )

Ссылки

понедельник, 14 сентября 2015 г.

Отзыв о книге: И.Ашманов, А.Иванов Оптимизация и продвижение сайтов в поисковых системах.

Ozon.ru - Книги | Оптимизация и продвижение сайтов в поисковых системах (+CD) 3-е изд. Ашманов И., Иванов А. | Ашманов И., Иванов А. | | | Купить книги: интернет-магазин / ISBN 978-5-496-00312-4Ozon.ru - Книги | Оптимизация и продвижение сайтов в поисковых системах (+CD) 3-е изд. Ашманов И., Иванов А. | Ашманов И., Иванов А. | | | Купить книги: интернет-магазин / ISBN 978-5-496-00312-4

На текущий момент мой лидер в SEO оптимизации сайта.

Написано хорошим техническим языком. Хороший теоретических подход. Не заумно но и не поверхностно. И сразу же практические примеры.

Сначала описана внутренность поисковых систем, чтобы ввести неподготовленного читателя в курс дела.

Далее описан большой круг подходов, чтобы ваш сайт "понравился поисковикам". Затронуты и белые и "серые" методы оптимизации.

После прочтнеия, вы уже будете ориентироваться в большинстве терминов, которые раньше могли вас пугать: Анкор, Серп, ПейджРанк, ТИЦ.
Причем термины достаточно толково объяснены, и с них спадает завеса "загадочности", которую любят напускать SEO-оптимизаторы.

Только по рекомендациям этой книги получилось вывести свой проект в лидеры (первая тройка, часто - первые места) по поисковым запросам. За полгода и с нулевым бюджетом в рекламу.

Какие области оказались не охваченными в книге и чего мне не хватило: платная реклама, ретаргетинг/ремаркетинг, продвижение сайтов в соц сетях. Конечно, судя из названия, это не входит в тему книги, но тема в тренде, поэтому  нужно будет искать отдельные книги по этим темам.

Моя оценка: 4+ из 5

Стоит ли читать: да, если вы хотите разобраться в SEO оптимизации сайтов.

Ссылки
Книга И.Ашманов, А.Иванов Оптимизация и продвижение сайтов в поисковых системах на Озоне

среда, 2 сентября 2015 г.

Битрикс: Интеграция с Bitrix24 ломает выгрузку заказов

Ситуация

Битрикс Управление сайтом 15.5.5
Была настроена интеграция с Битрикс24. После этого сломалась выгрузка заказов из 1С.
Выгрузка начлаа выдавать:
Ошибка проверки источника запроса. Обновите модуль обмена

Полный текст ошибки


Обмен не выполнен
Выгружено заказов: 2
Произошла ошибка: . По причине: 

Произошла ошибка на стороне сервера. Файл не отправлен (C:\Users\1GB\AppData\Local\Temp\4\1cbitrix\1cbitrix-2ed2f243-3f1a-47a0-ab45-8e2426a95baa.xml).
Обмен не выполнен
Ответ сервера:
Ошибка проверки источника запроса. Обновите модуль обмена.

Обмен заказами завершен с ошибками!!!

Решение

Помогло "быстрое" решение из статьи

Но статья рассчитана на профессионалов - не всем может быть понятно. Поэтому поясню.

Админка/Настройки/Командная PHP-строка вводим и выполняем следующие команды

COption::SetOptionString('catalog', 'DEFAULT_SKIP_SOURCE_CHECK', 'Y'); 
COption::SetOptionString('sale', 'secure_1c_exchange', 'N');