Разбирался на днях с Entity Framework, точнее сказать задача стояла работать с базой через ORM, и я остановился на Entity Framework.
У меня сложилось очень двоякое впечатление. Что-то хорошо, а что-то, что можно сделать совершенно простым запросом к бд, через entity framework просто так не сделаешь.
Здравствуйте, Ringin, Вы писали:
R>Разбирался на днях с Entity Framework, точнее сказать задача стояла работать с базой через ORM, и я остановился на Entity Framework. R>У меня сложилось очень двоякое впечатление. Что-то хорошо, а что-то, что можно сделать совершенно простым запросом к бд, через entity framework просто так не сделаешь.
R>Выскажите пожалуйста свои мнения!
Ну почему же, многие вещи даже проще чем в SQL
Кстати вроде как и сейчас можно в Linq to SQL использовать вывод типа http://msdn.microsoft.com/ru-ru/magazine/hh781018.aspx
string entitySQL = " SELECT p, p.Filling " +
"FROM PartyContext.Pinatas AS p "
"WHERE p.Filling.Description='Candy'";
var query=context.CreateQuery<DbDataRecord>(entitySQL);
query.MergeOption = System.Data.Objects.MergeOption.NoTracking;
var pinatasWithFilling=query.ToList();
Такой аля 1С ный синтаксис
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Ringin, Вы писали:
R>Разбирался на днях с Entity Framework, точнее сказать задача стояла работать с базой через ORM, и я остановился на Entity Framework. R>У меня сложилось очень двоякое впечатление. Что-то хорошо, а что-то, что можно сделать совершенно простым запросом к бд, через entity framework просто так не сделаешь.
Крайне медленный, уродливый и костыльный framework. Если вам нужен простой OM, советую Dapper. Для более сложных задач может вполне сгодиться NHibernate. Если все-таки намерены использовать EF, будьте готовы к крайне низкой производительности, огромному количеству кода и целому валу проблем.
S>> Такой аля 1С ный синтаксис
R>А вот надо мне например вывести пользователю все таблицы базы данных, прочитать констрейнты и показать связи, как это сделать?
Так никто тебе не мешает использовать SQL, там где это удобнее. Просто в Linq to EF полно прочих вкусностей. Ассемблер в нативе никто пока не запрещал
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, a_g_99, Вы писали:
__>Если все-таки намерены использовать EF, будьте готовы к крайне низкой производительности, огромному количеству кода и целому валу проблем.
В этом смысле это тот же NHibernate только в профиль — разницы никакой.
Здравствуйте, IB, Вы писали:
IB>В этом смысле это тот же NHibernate только в профиль — разницы никакой.
По крайней мере он быстрее EF(по моим личным тестам в среднем примерно в 6 раз). И там можно что-то быстро исправить (open source). А вообще согласен, оба каркаса отвратительны.
Здравствуйте, a_g_99, Вы писали:
__>Здравствуйте, IB, Вы писали:
IB>>В этом смысле это тот же NHibernate только в профиль — разницы никакой. __>По крайней мере он быстрее EF(по моим личным тестам в среднем примерно в 6 раз). И там можно что-то быстро исправить (open source). А вообще согласен, оба каркаса отвратительны.
Здравствуйте, QrystaL, Вы писали:
QL>Что посоветуете в качестве альтернативы?
В одной русской(российской?) песне пелось "Лучшие друзья девушек это бриллианты". Аналогично ситуации, лучшим другом developer является SqlDataReader. Но если вы все-таки хотите большего:
1) dapper, микро-OM для некоторого "ускорения" процесса разработки. Это скорее некоторая идеология а не полноценная ORM, но ее вполне достаточно like base для дальнейшего построения DL
2) разрабатывайте собственную OM based on features & tasks in DL которые вы должны реализовать
Здравствуйте, a_g_99, Вы писали:
__>Здравствуйте, QrystaL, Вы писали:
QL>>Что посоветуете в качестве альтернативы? __>В одной русской(российской?) песне пелось "Лучшие друзья девушек это бриллианты". Аналогично ситуации, лучшим другом developer является SqlDataReader. Но если вы все-таки хотите большего:
Только хранимки, только динамический sql, только хардкор!
__>2) разрабатывайте собственную OM based on features & tasks in DL которые вы должны реализовать
Здравствуйте, Yoriсk, Вы писали:
Y>И велосипедирование!
У каждого свой уровень. Кто-то велесипидирует, кто-то максимально эффективно и быстро реализует свой DL.
Здравствуйте, a_g_99, Вы писали:
__>Здравствуйте, Serginio1, Вы писали:
S>>1C __>За что же вас так Бог наказал ?
Может наоборот Природа наградила? А если без шуток, то для небольших систем Linq to EF самое то. Все, что больше уже требует огромного количества кода и наработок. А вот здесь уже выступают системы типа 1С,Microsoft Dynamics и оракловские продукты. Скорости вполне хватает, а для записи бОльших данных можно использовать прямой доступ. В том числе и для чтения но это типа не правильно, так позволяет обходиться без ключей.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Ringin, Вы писали:
R>Разбирался на днях с Entity Framework, точнее сказать задача стояла работать с базой через ORM, и я остановился на Entity Framework. R>У меня сложилось очень двоякое впечатление. Что-то хорошо, а что-то, что можно сделать совершенно простым запросом к бд, через entity framework просто так не сделаешь.
R>Выскажите пожалуйста свои мнения!
Хорошая вещь, сильно упрощает жизнь, за счет графического дизайнера модели можно быстро начать работать и уже по ходу дела разбираться с тонкостями.
Сильно тормозит на запросах к нескольким связанным таблицам. Но вообще, если что-то работает не так, как хотелось бы, почти всегда можно выкрутиться.
Здравствуйте, a_g_99, Вы писали:
__> И там можно что-то быстро исправить (open source). А вообще согласен, оба каркаса отвратительны.
Да и EF теперь OpenSource здесь
Здравствуйте, IB, Вы писали:
IB>Здравствуйте, a_g_99, Вы писали:
__>>Если все-таки намерены использовать EF, будьте готовы к крайне низкой производительности, огромному количеству кода и целому валу проблем. IB>В этом смысле это тот же NHibernate только в профиль — разницы никакой.
Здравствуйте, Ringin, Вы писали:
R>Разбирался на днях с Entity Framework, точнее сказать задача стояла работать с базой через ORM, и я остановился на Entity Framework. R>У меня сложилось очень двоякое впечатление. Что-то хорошо, а что-то, что можно сделать совершенно простым запросом к бд, через entity framework просто так не сделаешь.
В EF можно напрямую в БД запрос отправить и замапить результаты на классы.
R>Выскажите пожалуйста свои мнения!
Здравствуйте, a_g_99, Вы писали:
__>Здравствуйте, IB, Вы писали:
IB>>В этом смысле это тот же NHibernate только в профиль — разницы никакой. __>По крайней мере он быстрее EF(по моим личным тестам в среднем примерно в 6 раз). И там можно что-то быстро исправить (open source). А вообще согласен, оба каркаса отвратительны.
В последней версии сильно оптимизировали и выложили на codeplex с исходниками.