Метка «entity framework»

Здравствуйте!

В этой публикации хочу поделиться личным опытом использования Entity Framework (EF) в реальном приложении и дать несколько полезных советов использования данного фреймворка.

Я занимаюсь разработкой enterprise приложений на платформе .NET больше 7 лет, за это время перепробовал несколько ORM библиотек, но сейчас для новых проектов использую Entity Framework Code First.
Читать полностью »

О чем это

Доброго времени суток!

Я бы хотел рассказать о StubDb — библиотеке для быстрого прототипирования приложений и легкого юнит тестирования. Она позволяет заменять работу с реальной базой данных, на работу с данными хранимыми в памяти/файле. Это дает возможность сконцентрироваться на классах доменной модели, а не на особенностях хранения данных. StubDb использует принцип работы Entity Framework Code First, что делает удобным их совместное использование, но может использоваться отдельно.

Чтобы написать Data Persistence Layer, нужно затратить немало усилий. Работа с базой данных это — хлопотно: начиная от подключения и редактирования конфигов, и заканчивая написанием запросов. Раньше, пока ORM еще не были так популярны, много времени занимало написание однообразных SQL запросов. С развитием ORM, меньше времени тратится непосредственно на SQL, но вместо этого необходимо изучать особенности самих ORM фреймворков.

В теории все просто: программист работает с доменными объектами, изменения в них транслируются в базу данных легко и безболезненно. Но на практике особенности фреймворков часто вызывают недоумение и прострацию. Например, на данный момент на StackOverflow по ASP.NET MVC 77,852 вопросов, а по Entity Framework 33,276, меньше, но не значительно. А ведь в идеале EF должен просто незаметно делать свою работу.

Конечно, без БД не обойтись. Но когда приложение или новая фича находятся в начальной стадии проектирования и разработки, в БД нет необходимости. На этом этапе вполне достаточно: иметь доменную модель классов, хранить данные в этой модели вместе с взаимосвязями между отдельными классами (один к одному, многие ко многим), получать данные доменной модели, учитывая эти связи. StubDb реализует этот минимальный набор требований. Используя StubDb на начальном этапе разработки, можно избежать сложностей работы с БД и ORM, но при этом иметь возможность хранить данные в доменной модели и легко ее менять, не нарушая работоспособности приложения.
Читать полностью »

Хочу поделиться граблями перехода с EFW 5 на 6 в случае DataBase-First.

Тесно работаю с Entity Framework с пелёнок. Пересел на него с Linq2SQL.
Особых проблем с переходами между версиями не встречал. И в целом — каждый переход оправдывал ожидания.
Но сегодня я был слегка разочарован.
Читать полностью »

В мире DDD все крутится вокруг домена. Все бизнес правила живут внутри доменных сущностей либо доменных сервисов. Рассмотрим простой случай: есть сущность Категория, у которой есть несколько Подкатегорий. Также есть бизнес правило: нельзя добавить подкатегорию с именем, равным имени корневой категории (просто для примера). Обычно, мы напишем следующее:
Читать полностью »

Ни для кого не секрет, что адаптация Entity Framework проходит очень медленно. Огромное количество компаний продолжают использовать Linq2Sql и не планируют менять его на что-то новое в обозримом будущем, несмотря на то, что EF – официально рекомендуемая Microsoft технология доступа к БД, а Linq2Sql уже почти не поддерживается.

Тех, кто всё еще сомневается, можно ли использовать EF (и особенно – code first) на реальных проектах, приглашаю под кат.
Читать полностью »

image
Пару лет назад, когда деревья были большие и зеленые, ко мне пришли злые дотнетчики, и сказали — ага, попался! пришлось мне помочь коллегам в одном весьма странном проекте.

А именно — представьте себе пачку цифирей, которые аналитики составляют раз в месяц, в любимом ими пакете MS Office. И вот раз в месяц появилась необходимость эти цифры пережевывать и загружать в БД под управлением MS SQL.

И конечно же — этот мега-тул надо было сделать быстро. Чтобы потом передать на суппорт дешевым то ли малайцам, то ли индусам. Так что еще и рекомендовалось делать максимально понятно.

Читать полностью »

Entity Framework 6 — ALPHA
Зайдя сегодня с утра в менеджер пакетов NuGet в Visual Studio, обнаружил, что в писке обновления появилась prerelease версия Entity Framework 6. Заинтересовавшись, что же нового нас ждет решил узнать подробнее об этом обновлении. Информации пока не много, но кое-что узнать удалось.
Читать полностью »

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

Описание проблемы:

При разработке «в условиях» версионности primary key таблиц состоит из Id и Revision. Нужно получить выборку из таблицы БД по передаваемому списку составных ключей (Id, Revision). Такой SQL запрос выглядел бы так (для пяти элементов в списке):

/* Запрос 1 */
select *
from dbo.[Items] i
where  (i.Id = 1 and i.Revision = 2) 
	OR (i.Id = 1 and i.Revision = 4)
	OR (i.Id = 3 and i.Revision = 3)
	OR (i.Id = 3 and i.Revision = 4)
	OR (i.Id = 5 and i.Revision = 9)

Но Entity Framework не позволяет написать такой запрос для списка составных ключей. Максимум что можно сделать стандартными средствами это:

context.Items.Where(i=> idList.Contains(i.Id) && revisionList.Contains(i.Revision))

что превратится в такой запрос (концептуально):

/* Запрос 2 */
select *
from dbo.[Items] i
where i.Id in (1, 3, 5) and i.Revision in (2, 3, 4, 9)

Этот запрос будет выдавать неверные результаты, если таблице Items есть элементы с такими идентификаторами:
Id = 3, Revision = 2
Id = 3, Revision = 4
А в списке составных ключей есть такие строчки:
Id = 5, Revision = 4
Id = 3, Revision = 2

Так как же быть?
Читать полностью »

Использование Dynamic Data совместно с Entity Framework 5

Добрый день!

Как известно, уже вышла релиз-версия .NET Framework 4.5, а также стала доступна для загрузки финальная версия Visual Studio 2012.

Познакомиться с новой Visual Studio я успел еще с beta версии, а после релиза начал использовать rtm релиз Visual Studio и .NET Framework 4.5 в реальной работе.
В новую версию .NET Framework входит так же новая версия Entity Frameowrk. Уже пятая. Точнее она туда не совсем входит — у меня при создании проекта файлы подгружаются из репозитория NuGet. Но в любом случае в новом проекте используется именно 5 версия библиотеки.

Прежде чем продолжить, хочу вкратце рассказать, что же нового появилось в EF5 и почему я решил начать использовать эту версию.
Читать полностью »

Что такое вложенный MVC? Как в одном проекте уживаются три бэкенд-сервера Node, php-fpm и IIS? Можно ли запустить музыкальный сервис на своем ноутбуке? И как вообще работает tracksflow.com изнутри?

Схема tracksflow.com

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js