Разделы презентаций


Доступ к данным при помощи EF

Содержание

Понятие об ORMБез ORM код жестко привязан к источнику данных, программисту нужно хорошо знать SQL.С ORM, вы пишете код обращения к базе на используемом языке. ORM преобразует этот код в SQL

Слайды и текст этой презентации

Слайд 1Доступ к данным при помощи Entity Framework
ASP.NET MVC 4.0
2013

Доступ к данным при помощи Entity FrameworkASP.NET MVC 4.02013

Слайд 2Понятие об ORM
Без ORM код жестко привязан к источнику данных,

программисту нужно хорошо знать SQL.


С ORM, вы пишете код обращения

к базе на используемом языке. ORM преобразует этот код в SQL и выполняет обращение к источнику:

Понятие об ORMБез ORM код жестко привязан к источнику данных, программисту нужно хорошо знать SQL.С ORM, вы

Слайд 3Как ORM выполняет отображение


Хранилище данных
Программа (C#, Java и т.д.)
Контекстный объект

– отображается на саму БД. Назначение:
Подключение к БД;
Выполнение запросов;
Отслеживание изменений

и выполнение сохранения данных в БД;

Коллекции – служат для отображения содержимого таблиц. При запросе данных из таблиц, требуемые объекты помещаются в соответствующие типизированные коллекции.

Как ORM выполняет отображениеХранилище данныхПрограмма (C#, Java и т.д.)Контекстный объект – отображается на саму БД. Назначение:Подключение к

Слайд 4Хранилище данных
Программа(C#, Java и т.д.)
Связи – отображаются на вложенные коллекции

и ссылки. В данном примере:
User.Role – ссылка на объект Role,

представляющий роль данного пользователя.
Role.UserInRoles – коллекция со всеми объектами пользователей, находящихся в данной роли

Как ORM выполняет отображение

Хранилище данныхПрограмма(C#, Java и т.д.)Связи – отображаются на вложенные коллекции и ссылки. В данном примере:User.Role – ссылка

Слайд 5Хранилище данных
Ваше окружение (C#, Java и т.д.)
Строки таблицы отображаются на

экземпляры соответствующих объектов.

Например, поле Entity.State позволяет отслеживать состояние объектов и

осуществлять отложенную обработку этих объектов.

Как ORM выполняет отображение

Хранилище данныхВаше окружение (C#, Java и т.д.)Строки таблицы отображаются на экземпляры соответствующих объектов.Например, поле Entity.State позволяет отслеживать

Слайд 6Entity Framework для SQL Server CE

Entity Framework для SQL Server CE

Слайд 7Строительные блоки Entity Framework
Поставщик данных для EF от MS SQL

Server находится в сборке System.Data.Entity.dll.
Oracle и MySQL также имеют поставщиков

для EF.


Две ключевых части API-интерфейса EF — это службы объектов и клиент сущности.

Службы объектов отслеживают изменения, внесенные в сущности, управляют отношениями между сущностями, а также обеспечивают возможности сохранения изменений в базе данных. Службы работают с классами-потомками DbContext и DbSet.

Клиент сущности. Пространство System. Data. EntityClient аналогично SqlClient или OdbcClient и содержит классы EntityConnection, EntityCommand и т.п. Эти классы работают за кулисами, но можно их применять непосредственно.






Строительные блоки  Entity FrameworkПоставщик данных для EF от MS SQL Server находится в сборке System.Data.Entity.dll.Oracle и

Слайд 8Файл *. edmx
Хотя сущности клиентской стороны в конечном итоге отображаются

на таблицу базы данных, жесткая связь между ними отсутствует.

Файл *.

edmx содержит XML-описания для:
сущностей,
физической базы данных,
инструкций по отображению сущностей на таблицы и ограничения базы данных.

Файл *. edmxХотя сущности клиентской стороны в конечном итоге отображаются на таблицу базы данных, жесткая связь между

Слайд 9Классы DbContext и DbSet
class DbSet : IEnumerable
{
public

TEntity Add(TEntity entity);

public TEntity Find(params object[] keyValues);

public TEntity Remove(TEntity entity);
}

class DbContext : IDisposable
{
public virtual int SaveChanges();

protected virtual void OnModelCreating(DbModelBuilder modelBuilder);
}


DbContext




DbSet

DbSet

DbSet


Слайд 10Стратегии моделирования

Стратегии моделирования

Слайд 11Стратегия CodeFirst
Определить модели сущностей.

Определить модель контекста.

Прописать строку соединения в web.config.

Имя строки соединения должно совпадать с именем класса контекста.

Если база уже существует, таблицы в ней не будут сгенерированы.

Стратегия CodeFirstОпределить модели сущностей.Определить модель контекста.Прописать строку соединения в web.config.  Имя строки соединения должно совпадать с

Слайд 12Модели контекста и сущностей
using System;
using System.Data.Entity;
using System.Data.Entity.ModelConfiguration.Conventions;

namespace GuestBook.Models
{
public

class Repository: DbContext
{
public DbSet Comments

{ get; set; }
}
}

public class Record
{
public int Id { set; get; }
public string Text { set; get; }
public string Author { set; get; }
public DateTime RecordDate { set; get; }
}

Строка соединения
в Web.config

connectionString="Data Source=|DataDirectory|GBE.sdf" />

Модель контекста должна наследовать класс DbContext.

И иметь свойства – коллекции сущностей типа DbSet

Модели контекста и сущностейusing System;using System.Data.Entity;using System.Data.Entity.ModelConfiguration.Conventions;namespace GuestBook.Models{  public class Repository: DbContext  {

Слайд 13Перевод гостевой книги на EF
Создать слой доступа к данным по

шаблону Репозиторий.
public class Repository : DbContext, IRepository

{
public DbSet Records { get; set; }
public IEnumerable Read()
{
return Records as IEnumerable;
}
public void Create(Record record)
{
record.RecordDate = DateTime.Now;
Records.Add(record);
SaveChanges();
}
}
Перевод гостевой книги на EFСоздать слой доступа к данным по шаблону Репозиторий.  public class Repository :

Слайд 14Обнаружение типов-сущностей
Сущностями считаются базовые типы коллекций DbSet в классе контекста.

Сущностями

также считаются все типы, на которые ссылаются сущности, и это

правило рекурсивно.

public class Repository: DbContext
{
public DbSet Products { get; set; }
}

public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public Category Category { get; set; }
}

public class Category
{
public int Id { get; set; }
public string Name { get; set; }
public ICollection Products { get; set; }
}

Чтобы исключить какой-то тип из этой цепи, его надо пометить атрибутом [NotMapped]

Сущность

Сущность

Обнаружение типов-сущностейСущностями считаются базовые типы коллекций DbSet в классе контекста.Сущностями также считаются все типы, на которые ссылаются

Слайд 15Интерфейс IRepository
Выделяем интерфейс IRepository:
using System;
namespace GB.Models
{
interface IRepository

{
void Create(Record record);

System.Collections.Generic.List Read();
}
}

Класс Repository реализует IRepository:

public class Repository : IRepository {…}

Интерфейс IRepositoryВыделяем интерфейс IRepository:using System;namespace GB.Models{  interface IRepository  {    void Create(Record record);

Слайд 16Изменения в контроллере
Было:
Стало:

Изменения в контроллереБыло:Стало:

Слайд 17У нас проблема…
Фабрика контроллеров из фреймворка MVC готова воспользоваться любым

конструктором контроллера, но "не знает", что в него передавать.

Выход в

использовании службы, которая:
знает, как реализовать интерфейс IRepository;
доступна фабрике контроллеров.
т.е. Ninject

У нас проблема…Фабрика контроллеров из фреймворка MVC готова воспользоваться любым конструктором контроллера, но

Слайд 18Установка пакета Ninject.MVC3

Установка пакета Ninject.MVC3

Слайд 19Настройка зависимостей
В папке App_Start появился файл NinjectWebCommon.cs, который содержит весь

необходимый для работы Ninject код.


Метод RegisterServices предназначен для задания правил

реализации интерфейсов.

///


/// Load your modules or register your services here!
///

/// The kernel.
private static void RegisterServices(IKernel kernel)
{
kernel.Bind().To();
}
Настройка зависимостейВ папке App_Start появился файл NinjectWebCommon.cs, который содержит весь необходимый для работы Ninject код.Метод RegisterServices предназначен

Слайд 20Самостоятельно
Реализовать в гостевой книге доступ к данным через EF по

стратегии Code First.

СамостоятельноРеализовать в гостевой книге доступ к данным через EF по стратегии Code First.

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика