2012-01-08 3 views
2

У меня есть некоторые вопросы о том, как использовать Entity Framework в корпоративном приложении.Как использовать Entity Framework в приложении Enterprise

Прежде всего, я работаю с ADO.NET уже много лет, и я использую объекты для отражения данных, которые я получаю от поставщика базы данных. Каждый раз, когда я хочу что-то изменить или вставить somthing в базу данных.

Я просто вызываю метод Save() и выполняю работу. Каждый объект имеет DatabaseManager, который управляет запросами на уровне DataAccess. Например

public class Article{ 
    public int ID{get;set;} 
    public string Title{get;set;} 
    ..... 
    public bool Save(){ 
     if(this.ID == -1){ 
      return new ArticleDatabaseManager().InsertArticle(this); 
     }else{ 
      return new ArticleDatabaseManager().UpdateArticle(this); 
     } 
    } 
} 
public ArticleDatabaseManager : DatabaseManager 
{ 
    ...ADO.NET code 
} 

Я не знаю, если я должен использовать тот же architectur или изменить весь путь я использую это объекты в моем приложении.

Я подумал, что если я создать что-то вроде выше я могу сделать что-то вроде этого:

public class Article{ 
    public int ID{get;set;} 
    public string Title{get;set;} 
    ..... 
    public bool Save(){ 
     if(this.ID == -1){ 
      return new ArticleDatabaseManager().InsertArticle(this); 
     }else{ 
      return new ArticleDatabaseManager().UpdateArticle(this); 
     } 
    } 
} 

В каждом DatabaseManager реализует некоторую ссылку организациям или даже EntitySQL делать ту же работу, как старый DatabaseManager делает. Заполните бизнес-модели значениями i из объектов Entity. Тогда я мог бы работать с Бизнесом, как и раньше, и просто в любое время, когда хочу сделать некоторые изменения, которые я связываю через EntityFramework с базой данных.

Мог ли я реализовать что-то вроде выше?

Может ли я просто наследовать предыдущие бизнес-объекты объектам сущности? EX: класс Статья общественности: ArticleEntity { // некоторые свойства для проверки и т.д. }

Sould я использовать что-то совершенно другое? Я просто не знаю:/

У меня нет опыта работы с другими ОРМ. Просто моя ручная книга «ORM».

Большое спасибо. Я прошу прощения за мое отсутствие английского языка и я знаю, что я прошу слишком чепчика в одном вопросе ... Но переход от одной технологии к Иному для динозавра, как я, как я изменить Страну:/

+1

Вы должны задать только один вопрос в каждом сообщении. Переместите раздел «ЭТОТ БАЗЫ ДАННЫХ ...» на другой вопрос. –

+0

Извините, но я думал, что этот вопрос возникает из навигации сущности сущности. Я удалил его. :) – Sanosay

ответ

5

Вы хотя бы пытались использовать учебник EF? Если не настало время это сделать, потому что мы не можем объяснить вам все о EF в одном ответе (даже в нескольких случаях - это не цель SO для замены учебников и учебных материалов). Это должно дать вам довольно четкий ответ обо всех ваших материалах, связанных с вашими менеджерами баз данных.

В общем, вы знали, что очень близко к Активному образцу. Если ваши объекты также имеют статические методы, используемые для извлечения объекта из базы данных, это активный шаблон записи. При использовании EF вы обычно не используете этот шаблон, и вам не нужен менеджер баз данных. EF строится вокруг класса, который называется контекстом, и этот контекст работает как ваш менеджер баз данных для всех объектов, которые вы используете. Можно добавлять методы сохранения и извлечения в объекты, но поскольку это нарушает разделение проблем, и это заставляет ваши объекты сильно зависеть от EF и настойчивости (тенденция состоит в том, чтобы сделать их полностью независимыми = POCO), она обычно не используется.

Не извлекайте какой-либо пользовательский класс из объекта.EF не сможет использовать ваш производный тип. Используйте объект, отображаемый в EF в качестве вашего класса, и добавьте все пользовательские свойства и методы непосредственно в этот класс (вы даже можете создать этот класс с нуля, если вы не хотите использовать генераторы кода). В случае сгенерированных объектов вы можете добавить собственный код в частичные классы. Если вы не используете объект EF в качестве объекта, вам придется вручную обрабатывать преобразование из одного в другое (или использовать какой-либо инструмент, например AutoMapper).

EF не может работать со столбцом XML - он будет обрабатывать его как строку. Особенно, если вы планируете использовать эти данные для некоторого упорядочения или фильтрации, и если они имеют фиксированную структуру, вы должны моделировать их как отдельные таблицы/сущности. Если это действительно структурированный контент (с динамической структурой), вы можете использовать его как XML-строку.

+0

Да, я прочитал учебники EF и книги о структуре. Но я немного смутился. Вот почему я спросил здесь. И несмотря на то, что вы были ироничны сначала, вы дали мне очень хороший ответ. Спасибо большое :) – Sanosay

+0

http://code.msdn.microsoft.com/ASPNET-MVC-Application-b01a9fe8/sourcecode?fileId=25232&pathId=1337828505 Это «право» использование EntityFramework, потому что я вижу что он использует DAL. Спасибо – Sanosay

Смежные вопросы