Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > Цикл статей по Entity Framework


Автор: Idsa 10.3.2009, 08:57
Уважаемые винградовцы, разрешите представить Вашему вниманию мои статьи по Entity Framework.

Цикл статей "Влюбляемся в Entity Framework":
1. http://alexidsa.blogspot.com/2009/03/entity-framework-1-ef.html
2. http://alexidsa.blogspot.com/2009/03/entity-framework-2-ef.html
3. http://alexidsa.blogspot.com/2009/03/entity-framework-3_16.html
4. http://alexidsa.blogspot.com/2009/03/entity-framework.html
5. http://alexidsa.blogspot.com/2009/05/entity-framework.html
Продолжение следует.

Серия статей "Entity Framework 4":
1. http://alexidsa.blogspot.com/2009/06/entity-framework-4-1-pluralization-ddl.html
Продолжение следует.

Автор: thomas 10.3.2009, 10:51
Idsa,
 smile  +  smile  +1 

Автор: Idsa 10.3.2009, 12:50
thomas, когда писал фразу
Цитата

Стоит отметить, что до появления ORM (Hibernate 1.0 датирован лишь 2002 годом) программисты зачастую создавали свои собственные утилиты, которые по возможностям очень напоминали сегодняшние ORM.

, вспомнил о тебе smile

Автор: jonie 10.3.2009, 23:04
Idsa скринкасты, нам нужны скринкасты 8)) (тока не в wmv, флеш имхо лучше))
выложи материал на habrahabr.ru - так тебя узнает много (зачастую неадекватного)) народу))

Автор: Idsa 11.3.2009, 06:42
Цитата(jonie @  11.3.2009,  03:04 Найти цитируемый пост)
Idsa скринкасты, нам нужны скринкасты

Не, я уж как-нибудь постаринке smile

Цитата(jonie @  11.3.2009,  03:04 Найти цитируемый пост)
выложи материал на habrahabr.ru - так тебя узнает много

А оно мне надо? smile
С другой стороны, блог у меня в зародышевом состоянии, читателей практически нет, соответственно нет и комментов (а писать в режиме "монолог" не очень прикольно). В общем, я еще думаю smile

Автор: Idsa 20.3.2009, 19:24
Добавлены новые статьи:
3. http://alexidsa.blogspot.com/2009/03/entity-framework-3_16.html
4. http://alexidsa.blogspot.com/2009/03/entity-framework.html

Автор: thomas 21.3.2009, 10:28
Idsa
Спасибо.  smile 
Читаю с интересом. 
Ждем продолжения.
Успехов во всем.  smile 

Автор: -Mikle- 21.3.2009, 11:11
Idsa, спасибо, мне тоже интересно почитать smile

Автор: Idsa 21.3.2009, 16:04
Спасибо за позитив smile Как говорится, доброе слово даже Идсе приятно smile

Но еще больше мне бы хотелось услышать критику: ошибки, опечатки, что не понравилось и т. д.

Автор: Idsa 23.3.2009, 09:04
Правду говорят: власть портит людей smile Первое, что я сделал, став модератором ADO.NET-раздела, - прикрепил этот пост. Надеюсь, никто не против.

Автор: thomas 23.3.2009, 14:39
Idsa
 smile 
Ты не спрашивай, а статьи пиши дальше.  smile

Добавлено через 1 минуту и 35 секунд
Да, кстати поздравляю с назначением на столь ответственный пост.  smile 
Будь умненьким и благоразумненьким, как говорил папа Карло.   smile 

Автор: Idsa 23.3.2009, 18:37
Цитата(thomas @  23.3.2009,  18:39 Найти цитируемый пост)

Ты не спрашивай, а статьи пиши дальше. 

Думаю, следующая статья будет в лучшем случае через пару недель. У меня кругом дедлайны...

Автор: SpaceSpace 30.3.2009, 13:02
Idsa, может про Sync Framework тоже заодно напишеш? smile 

Автор: Idsa 30.3.2009, 13:10
SpaceSpace, очень вряд ли smile У меня по EF запланировано порядка 15 статей...

Автор: PashaPash 8.4.2009, 18:02
Idsa, раз уж в соседнем топике Linq To Sql обозвали мертворожденным...Можно заказать тему для слудющией статьи? 
В последнее время MS наконец-то стало на рельсы TDD, а прогонять unit-тесты на коде, жесто связанным с базой неприятно и долго - и разработчики просто начинают на тестирование забивать... вобщем, хочу статью по реализации простой реализации паттерна Repository и Persistence Ignorance в EF, желательно в сравнении с Linq To Sql.

Автор: Idsa 8.4.2009, 19:16
PashaPash, подобный пост у меня запланирован... но, к сожалению, это будет совсем не скоро.

Автор: PashaPash 8.4.2009, 19:38
Idsa, ну можно хоть немного поднять ему приоритет? smile

Автор: Idsa 8.4.2009, 19:39
PashaPash, сделано smile

Автор: Sharki 8.4.2009, 20:11
Спасибо за интересные статьи.А на каком месте в очереди тема Sync Framework ,Особенно тема Sync Framework + DB.
Для меня это сейчас очень актуально.Может передвините её поближе.

Автор: Idsa 8.4.2009, 20:13
Цитата(Sharki @  9.4.2009,  00:11 Найти цитируемый пост)
Для меня это сейчас очень актуально.Может передвините её поближе. 

У меня даже планов нет об этом писать smile

Автор: Sharki 8.4.2009, 20:40
 smile а жаль,очень интересная тема.

Автор: Idsa 8.4.2009, 20:45
Sharki, так вот и возьмитесь постингом по этой теме smile

Автор: Sharki 8.4.2009, 20:52
Спасибо Idsa,но я ещё не дорос чтоб свои статьи писать.Мне самому ещё помощь нужна.Но за предложение спасибо.

Автор: Partizan 8.4.2009, 21:23
 smile 
Idsa, а я бы хотел услышать побольше об использовании MS Azure Services, можно и мой заказ на статью поместить в очередь?  smile 

Автор: PashaPash 8.4.2009, 22:03
Idsa, дай им палец - сожрут целиком.

Автор: Idsa 9.4.2009, 05:32
Цитата(PashaPash @  9.4.2009,  02:03 Найти цитируемый пост)
Idsa, дай им палец - сожрут целиком. 

Во-во smile

Цитата(Partizan @  9.4.2009,  01:23 Найти цитируемый пост)
Idsa, а я бы хотел услышать побольше об использовании MS Azure Services, можно и мой заказ на статью поместить в очередь?  smile 

Щас как помещу - мало не покажется! smile 

Автор: SLeN 24.5.2009, 12:56
В приложенном http://www.savefile.com/files/2033418 к второй статье скрипт создает пустую БД, таблицы Addresses и Persons отсутвуют.

Автор: Idsa 24.5.2009, 14:37
Пофиксил smile
Теперь вместо скрипта бэкап. И залил я его на этот раз на dropbox: http://dl.getdropbox.com/u/957029/Developing/Blog/%D0%92%D0%BB%D1%8E%D0%B1%D0%BB%D1%8F%D0%B5%D0%BC%D1%81%D1%8F%20%D0%B2%20Entity%20Framework%20%D0%A8%D0%B0%D0%B3%20%D0%B2%D1%82%D0%BE%D1%80%D0%BE%D0%B9%20%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0%20EF/FirstModel.bak

Автор: SLeN 26.5.2009, 13:01
Не знаю в правильном ли месте постю инфу, но :
очень помогает в освоении книжка "Programming Entity Framework by Julia Lerman" (eng)  (можно найти и в электронном варианте)
Достаточно четко все изложено и куча примеров кода.

примеры кода по книге можно взять http://learnentityframework.com/LearnEntityFramework/downloads/

Автор: Idsa 31.5.2009, 22:08
Опубликовал пятую часть: http://alexidsa.blogspot.com/2009/05/entity-framework.html

Автор: Idsa 8.6.2009, 10:35
Цикл статей "Влюбляемся в Entity Framework" временно приостановлен.
В ближайшее время буду заниматься серией статей по Entity Framework 4. Предлагаю Вашему вниманию первую часть: http://alexidsa.blogspot.com/2009/06/entity-framework-4-1-pluralization-ddl.html

Автор: Idsa 8.6.2009, 11:40
PashaPash, помнится ты заказывал статью о реализации паттернов Repository и Persistence Ignorance в EF, при этом намекая на то, что в LINQ To SQL дела с этим обстоят лучше. Так как моя компетенция в вопросе паттернов находится на низком уровне, прошу пояснить, чем в этом отношении LINQ To SQL выигрывает у EF v. 1.

Автор: Idsa 8.6.2009, 21:48
PashaPash, задам наводящие вопросы:
1. Дело в POCO?
2. Дело только в POCO или в чем-то еще?
3. Может, POCO вообще ни при чем? Тогда что "при чем"?

Автор: PashaPash 9.6.2009, 15:44
Idsa, дело в POCO.
И вообще в возможности персистить произвольный класс.

Автор: Idsa 9.6.2009, 17:26
PashaPash, а чем в этом отношении LINQ To SQL лучше EF v. 1? Только лишь тем, что L2S-сущности требует реализации интерфейса, а EF-cущности - наследования от базового класса (к слову, в EF v. 1 есть поддержка сущностей, реализующих интерфейс, а не наследующих базовый класс)?

Автор: PashaPash 9.6.2009, 19:29
Idsa, L2S вообще не требует ничего от сохраняемого класса. Берешь POCO объект - и сохраянешь/загружаешь (могу пример скинуть для изучения). Т.е. он позволяет сделать CRUD-репозиторий для произвольных классов. А EF - требует определенного предка, навязывает tracking ... вобщем слишком сильно вползает в уровень BO/BE, и тянет на себя одеяло архитектуры.

Автор: Idsa 9.6.2009, 22:08
Цитата(PashaPash @  9.6.2009,  23:29 Найти цитируемый пост)
Берешь POCO объект - и сохраянешь/загружаешь (могу пример скинуть для изучения)

Будет очень кстати smile

Цитата(PashaPash @  9.6.2009,  23:29 Найти цитируемый пост)
Т.е. он позволяет сделать CRUD-репозиторий для произвольных классов.

Т. е. те интерфейсы, которые для классов реализует дизайнер, - необязательные? Что, даже навигационные свойства - не L2S-specific?

Автор: PashaPash 10.6.2009, 09:40
Цитата(Idsa @  9.6.2009,  22:08 Найти цитируемый пост)
Будет очень кстати smile

ок, как доберусь до работы smile
Цитата(Idsa @  9.6.2009,  22:08 Найти цитируемый пост)

Т. е. те интерфейсы, которые для классов реализует дизайнер, - необязательные? Что, даже навигационные свойства - не L2S-specific?

Вообще весь файл, сгенеренный дизайнером - необязателен. Можно создать DataContext, подсунуть ему метаданные (XmlMappingSource в случае чистых POCO, AttributeMappingSource в случае не совсем чистых) - и все заработает. Если не нужен/не используется lazy load, то EntityRef/EntitySet не нужны, L2S вполне загружает связи в обычные свойства и List<T>. Минимализм и все такое.

Автор: SLeN 10.6.2009, 10:31
 smile 

Уже не первый день с интересом слежу за развитием данной темы.  smile 

Автор: Idsa 10.6.2009, 11:02
Цитата(SLeN @  10.6.2009,  14:31 Найти цитируемый пост)
Уже не первый день с интересом слежу за развитием данной темы.  smile  

Это замечательно... но к чему этот смайлик? smile

Автор: SLeN 10.6.2009, 12:59
 этот смайлик относится к моей каше в голове по данной теме  smile 

Автор: Idsa 10.6.2009, 13:00
Цитата(SLeN @  10.6.2009,  16:59 Найти цитируемый пост)
этот смайлик относится к моей каше в голове по данной теме  smile  

Так а форум на что? smile Задавай вопросы - будем разбираться (правда, не в этом топике).

Автор: SLeN 10.6.2009, 13:02
я книжки пока читаю
"Nhibernate In Action"

Автор: Idsa 15.6.2009, 06:35
На тот случай, если кто-то ждет (ну а вдруг smile ) следующую статью, решил предупредить, что она появится ближе к конце месяца: защита у меня smile

PashaPash, ты не мог бы закидать меня ссылками по поводу того, как неPOCO негативно влияет на юнит-тестирование и архитектуру в целом? А то ничего толкового по этому поводу найти не удалось... а у самого опыта в этом деле минимум.

Автор: Idsa 15.6.2009, 07:33
Еще 5 копеек от меня smile
Мне бы хотелось получить как можно больше мнений (особенно негативных) по поводу уже написанных статей. Что не понравилось? Что показалось не очень понятным? и т. д. По личной переписке знаю, что некоторые винградовцы почитывают мои статьи, поэтому прошу не стесняться в выражениях и говорить мне все, как есть (здесь, в личке, в комментах - хоть где) smile

Автор: SLeN 15.6.2009, 16:23
Цитата(Idsa @  15.6.2009,  06:35 Найти цитируемый пост)
PashaPash, ты не мог бы закидать меня ссылками по поводу того, как неPOCO негативно влияет на юнит-тестирование и архитектуру в целом? А то ничего толкового по этому поводу найти не удалось... а у самого опыта в этом деле минимум. 


Лучше публично.

И до сих пор ждем:

Цитата(PashaPash @  9.6.2009,  19:29 Найти цитируемый пост)
L2S вообще не требует ничего от сохраняемого класса. Берешь POCO объект - и сохраянешь/загружаешь (могу пример скинуть для изучения). Т.е. он позволяет сделать CRUD-репозиторий для произвольных классов.


Правда это можно и погуглить, но сейчас катастрофически нет времени, так что очень хочется кратки и живой пример.

Автор: PashaPash 15.6.2009, 16:41
Цитата(Idsa @  15.6.2009,  06:35 Найти цитируемый пост)

PashaPash, ты не мог бы закидать меня ссылками по поводу того, как неPOCO негативно влияет на юнит-тестирование и архитектуру в целом? А то ничего толкового по этому поводу найти не удалось... а у самого опыта в этом деле минимум. 

На юнит-тестирование - очень простое влияние. неPOCO (точнее, отсутствие Persistence Ignorance) требует базы данных для прогонки каждого теста. При этом:
1. Состояние базы должно быть одинаковым для каждого запуска
2. Результат не должен зависеть порядка запуска

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

А в целом на архитектуру - очень размытое понятие. Напиши что-нибудь крупное на EF, узнаешь ;)

Добавлено через 1 минуту и 8 секунд
Цитата(SLeN @  15.6.2009,  16:23 Найти цитируемый пост)

Правда это можно и погуглить, но сейчас катастрофически нет времени, так что очень хочется кратки и живой пример.

Посмотри http://blog.wekeroad.com/subsonic/subsonic-30-the-simplerepository/

Автор: Idsa 16.6.2009, 07:37
Цитата(PashaPash @  15.6.2009,  20:41 Найти цитируемый пост)
На юнит-тестирование - очень простое влияние. неPOCO (точнее, отсутствие Persistence Ignorance) требует базы данных для прогонки каждого теста.

Хм... А разве EF-сущности требуют базу данных для прогонки тестов?  smile 

Автор: PashaPash 18.6.2009, 13:58
Цитата(Idsa @  16.6.2009,  07:37 Найти цитируемый пост)

Хм... А разве EF-сущности требуют базу данных для прогонки тестов?  smile  

Ок, простой пример.
Код

    public class Customer
    {
        public int Id { get; set; }
        public int Name { get; set; }
    }

    public interface ICustomerService
    {
        Customer CreateCustomer(string name);
    }

    public class CustomerService : ICustomerService
    {
        public Customer CreateCustomer(string name)
        { 
            
        }
    }

//....
    [TestMethod]
    public void CreateCustomer_Creates_Customer()
    {
        // Arrange
        ICustomerService service = new CustomerService();

        // Act
        Customer newCustomer = service.CreateCustomer("cust1");

        // Assert
        Assert.AreNotEqual(0, newCustomer);
        Assert.AreEqual("cust1", newCustomer.Name);
    }


Как должен выглядеть CustomerService.CreateCustomer в случае EF? Чтобы он работал во время тестов без базы, а в живой системе - с базой, и честно в нее сохранял без дополнительной пляски с бубном.

Автор: SLeN 18.6.2009, 15:11
Как на счет Mock ?

Автор: Idsa 22.6.2009, 07:59
PashaPash, так уж сложилось, что на данный момент я еще не овладел искусством Unit-тестирования... Видимо, именно поэтому даже после того, как ты привел пример, я не понимаю, в чем разница между POCO/неPOCO в данном случае.

PashaPash, ты как-то заводил разговор о реализации Repository под EF v. 1... Вот блог-пост на эту тему: http://blog.keithpatton.com/2008/05/29/Polymorphic+Repository+For+ADONet+Entity+Framework.aspx

Автор: PashaPash 22.6.2009, 11:29
Idsa, трудность как раз не в том, чтобы реализовать IRepostory, как по ссылке. Трудно реализовать точно такой же IRepository, но уже без EF - т.е. чтобы он корректно сохранял объекты-наследники EntityObject. Попробуй просто набросать код CreateCustomer в примере выше. С использованием репозитория по ссылке, но со второй половиной - работой того же кода без базы данных.

SLeN, Mock - это хорошо, но тоже не слишком тривиально в случае EF. Приведешь пример?

Автор: SLeN 22.6.2009, 11:35
Цитата(PashaPash @  22.6.2009,  11:29 Найти цитируемый пост)
Приведешь пример? 

Не, - я от Ef пока отказался в пользу Nhibernate.

p.s.

Меня интересует Object First (DDD) а Ef пока этого не позволяет + я влюбился в рефлекшн оптимизатор Nhibernate =)

Автор: PashaPash 22.6.2009, 13:49
SLeN, а почему не в пользу родного L2S?

Автор: SLeN 22.6.2009, 14:23
На мой взгляд Nhibernate более зрелая ( большинство проблем с которыми можно столкнутся в реальных проектах - уже столкнулись и решили), за многие годы в нее влилось куча гениальных решений (как я уже говорил один только рефлекшн оптимизатор чего стоит), + у её поведение для меня понятно на интуитивном уровне (тоесть - еслибы я участвовал в разработке некой ORM то использовал бы очень похожие решения).

Я пока с ней только осваиваюсь, но еще не было случая когда бы она меня огорчила =)


Автор: Idsa 22.6.2009, 14:27
SLeN, а что рефлекшн оптимизатор умеет?

Автор: SLeN 22.6.2009, 14:55
Он умеет инжектировать свой код в классы тем самым используя рефлексию только 1 раз при запуске, а после через инжектированый код добираться до приватных членов  - тем самым позволяя бизнес уровню поддерживать инкапсуляцию несмотря на использование ORM.

Автор: PashaPash 23.6.2009, 01:01
SLeN, эта куча гениальных решений точно так же влилась в Linq2SQL + добавилась нормальная поддержка Linq.
Linq to SQL тоже использует кодогенерацию "один раз при запуске" и потом заливает данные прямо в приватные члены, без рефлекшена. Просто MS не выпячивал это как супер-рефлекш-оптимайзер. Поработай с L2S немного, он намного интуитивнее остальных ORM.

Все ORM одинаковы - это реализация одного и того же паттерна, отличаются только детали. Насчет зрелости NHibernate - прошел год (!!!) от релиза .net 2.0 до поддержки 2.0, nullable и generics со стороны NHibernate. Полноценной поддержки Linq, на том уровне, на котором она есть в L2S (выборка только использованных в коде полей, лямбды, вылизанная кодогенерация) придется ждать еще года полтора. А в L2S это все появилось уже полтора года назад. Много всяких "рефлекш оптимайзеров и инжектирований кода" в нем уже работает, проверено на куче реальных проектов. NHibernate обречен ползти в хвосте, по довольно очевидным, но независящим от него причинам.

Автор: SLeN 23.6.2009, 10:08
HQL
позволяет
Цитата

Retrieving only properties of an entity or entities,...


вылизанная кодо генерация тоже присутствует.

лямбд - да не встречалось, но я пока использую версию 1.20 и не смотрел чего в 2.0 запихнули ;)
но и в 1.20 достаточно много стратегий выборки - HQL, QBC, QBE

В общем хочется пока поиграть с этой игрушкой =) , тем более что она очень гибкая и поддерживает кучу стратегий, ну а после того как почувствую себя в ней достаточно уверенно - взглянуть на остальное, к томуже  будет уже с чем сравнивать 

Автор: PashaPash 23.6.2009, 11:06
Цитата(SLeN @  23.6.2009,  10:08 Найти цитируемый пост)
HQL
позволяет
Цитата

Retrieving only properties of an entity or entities,...

Голый SQL тоже позволяет выбирать только определенные свойства. Вся разница в уровне. HQL позволяет это делать в виде строго типизированного кода? что-то вроде
Код

var idAndAlias = context
    .Companies
    .Select(c => new { c.Id, c.CompanyAlias })
    .FirstOrDefault();

string alias = idAndAlias.CompanyAlias;

Цитата(SLeN @  23.6.2009,  10:08 Найти цитируемый пост)
лямбд - да не встречалось, но я пока использую версию 1.20 и не смотрел чего в 2.0 запихнули ;)
но и в 1.20 достаточно много стратегий выборки - HQL, QBC, QBE

А в Linq 2 SQL - одна - LINQ, и она рвет эти "много" с большим отрывом. За счет преобразования кода C# в SQL запросы.

Цитата(SLeN @  23.6.2009,  10:08 Найти цитируемый пост)
В общем хочется пока поиграть с этой игрушкой =) , тем более что она очень гибкая и поддерживает кучу стратегий, ну а после того как почувствую себя в ней достаточно уверенно - взглянуть на остальное, к томуже  будет уже с чем сравнивать 

Сначала нужно смотреть стандартные - встроенные в framework - вещи. А не порты с java, отстающие в развитии на 3 года.

Автор: SLeN 23.6.2009, 11:37
PashaPash
Цитата(PashaPash @  23.6.2009,  11:06 Найти цитируемый пост)
Голый SQL тоже позволяет выбирать только определенные свойства. Вся разница в уровне. HQL позволяет это делать в виде строго типизированного кода?


бес понятия я еще не работал с этой возможностью.


Цитата(PashaPash @  23.6.2009,  11:06 Найти цитируемый пост)
рвет эти "много" с большим отрывом. 

тоже прокомментировать не могу, по той же причине - я еще в плотную не работал с этим

думаю нужно отложить продолжение дискуссии Nhibernate vc L2S на какоето время, так как я пока не подходящий оппонент  smile 

Автор: Idsa 23.6.2009, 11:46
Цитата(SLeN @  23.6.2009,  15:37 Найти цитируемый пост)
бес понятия я еще не работал с этой возможностью.

Думаю, не ошибусь, если предположу, что это был риторический вопрос smile Откуда в HQL строгая типизация?! smile Там разве что параметры есть... но это пшик по сравнению с LINQ+Lambda.

Автор: SLeN 23.6.2009, 12:08
Решил таки не пренебрегать советами и  ознакомиться  с L2S и уж после сделать выбор в сторону одной из технологий

Автор: Idsa 24.6.2009, 11:52
Цитата(PashaPash @  23.6.2009,  05:01 Найти цитируемый пост)
Linq to SQL тоже использует кодогенерацию "один раз при запуске" и потом заливает данные прямо в приватные члены, без рефлекшена.

Это как? smile 

Автор: PashaPash 24.6.2009, 13:43
Idsa, в приватные - потому что есть аттрибут маппинга DataAttribute.Storage, который Gets or sets a private storage field to hold the value from a column. За кодогенерацию записи значения в поле отвечает System.Data.Linq.SqlClient.ObjectReaderCompiler+Generator.GenerateStoreMember, в MemberInfo спускается отрефлекченное поле с именем DataAttribute.Storage
Код

private void GenerateStoreMember(MemberInfo mi)
{
    FieldInfo field = mi as FieldInfo;
    if (field != null)
    {
        this.gen.Emit(OpCodes.Stfld, field);
    }
    else
    {
        MethodInfo setMethod = ((PropertyInfo) mi).GetSetMethod(true);
        this.gen.Emit(GetMethodCallOpCode(setMethod), setMethod);
    }
}

OpCodes.Stfld вполне так сторит значение в private field.
Вот примерно так.

Автор: vlsaf 13.11.2009, 14:36
А можно ли вызывать хранимые процедуры, используя EF? Дело все в том, что нужно отфутболить уже наработанную бызу в  облако. В базе есть хранимки, которые делают некие бизнес - операции. И очень не хотелось бы это все переписывать. Это первое.


А второе. Также есть для некоторых таблиц хранимые процедуры, отвечающие за валидные операции. Например имеется таблица Adress. И для нее четыре хранимые процедуры. 
Adress_Insert
Adress_Select
Adress_Update
Adress_Delete

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



Вот и вопрос. Можно ли существующие хранимые процедуры использовать в EF?

Автор: Idsa 13.11.2009, 19:04
vlsaf, на оба вопроса ответ "да, но...".

Буду говорить о EF v1, ибо не знаком с этими аспектами EF4.

1. Да вызывать хранимые процедуры можно, но красиво (через ObjectContext) это можно сделать не со всеми (зависит от возвращаемого значения). Подробности в гугл "EF stored procedures".

2. Можно назначить хранимые процедуры для операций Update/Insert/Delete. С Select'ом не прокатит - придется делать вручную.

Автор: coddy 10.3.2010, 18:40
Доброго времени суток!
Подскажите с таким вопросом:
Есть спискок объектов EF (v4) который получается выборкой из БД. И отображается в DataGridView (на данный момент winforms, но думаю скоро переделаю на WPF).
Как после изменения данных в гриде, занести эти изменения в БД?

Автор: DenWPF 10.5.2011, 08:51
coddy тема называется "Цикл статей по Entity Framework" !

Прошу больше статей по EF 4

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)