Провайдер Entity Framework 6

Примечание

Поддержка остановлена, использовать не рекомендуется.

Для использования Linter с Entity Framework 6 необходимо добавить в проект зависимости на пакеты EntityFramework, EntityFramework.Linter и System.Data.LinterClient при помощи менеджера пакетов NuGet, зарегистрировать и сконфигурировать для испоьлзования классы LinterClientFactory и LinterProviderServices. После этого можно использовать стандартные методы Entity Framework для разработки приложения. Например, следующая программа сохраняет в БД время запуска и выводит на экран список всех запусков. Данный пример можно использовать для создания журнала посещений, где каждый запуск приложения соответствует визиту одного человека:

// C#
using System;
using System.Data.Entity;

namespace CodeFirstDemo
{
  class Program
  {
    static void Main(string[] args)
    {
      // Регистрация фабрики классов провайдера
      DbConfiguration.SetConfiguration(new LinterContextConfiguration());

      DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.LinterClient");
      DbConnectionStringBuilder builder = factory.CreateConnectionStringBuilder();
      builder.ConnectionString = "Data Source=LOCAL;User ID=SYSTEM;Password=MANAGER8";
      DbConnection con = factory.CreateConnection();
      con.ConnectionString = builder.ToString();
      con.Open();
      using (var context = new VisitContext(con))
      {
        // Подключение к БД и создание таблицы, если она не существует
        context.Database.CreateIfNotExists();

        // Добавление новой записи и сохранение изменений
        context.Visits.Add(
          new Visit { Name = "Пользователь A", Date = DateTime.Now });
        context.SaveChanges();

        // Чтение записей из БД
        Console.WriteLine("Список визитов:");
        foreach (var visit in context.Visits)
        {
          Console.WriteLine(visit.Id + " | " + visit.Name + " | " + visit.Date);
        }

        Console.WriteLine("Для продолжения нажмите любую клавишу...");
        Console.ReadKey();
      }
    }
  }

  class LinterContextConfiguration : DbConfiguration
  {
    public LinterContextConfiguration()
    {
      Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
      DbProviderFactories.RegisterFactory("System.Data.LinterClient", typeof(LinterClientFactory));
      SetProviderServices("System.Data.LinterClient", LinterProviderServices.Instance);
    }
  };

  public class VisitContext : DbContext
  {
    public VisitContext(DbConnection con) : base(con, true)
    {
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
        modelBuilder.HasDefaultSchema("SYSTEM");
    }

    public DbSet< Visit > Visits { get; set; }
  }
}

При первом запуске приложения в БД будет создана схема "SYSTEM" и таблица "SYSTEM"."Visits", если запуск производится на платформе, поддерживаемой миграциями EF6.

Таблицу также можно создать на этапе разработки приложения с помощью автоматических миграций Code First Migrations. Для этого в меню Visual Studio выбрать Tools(Сервис)= >NuGet Package Manager(Диспетчер пакетов NuGet)= >Package Manager Console(Консоль диспетчера пакетов) и в появившемся окне после приглашения PM > ввести команды:

PM > Enable-Migrations -EnableAutomaticMigrations
PM > Add-Migration Visit_create
PM > Update-Database

Примечание

Если контекст унаследован от класса ObjectContext, то методы CreateDatabase() и DeleteDatabase() выполняют создание и удаление таблиц БД соответственно.

Если контекст унаследован от класса DbContext, то удаление таблиц методом DeleteDatabase() не поддерживается в текущей версии.