Автоматизация Code First

Данное руководство устарело. Актуальное руководство: Руководство по Entity Framework Core

Последнее обновление: 31.10.2015

Вручную создавать классы по уже готовой бд со всеми полями и связями между собой довольно утомительно, особенно если таблиц в БД очень много. В обновленных версиях Visual Studio 2013 с пакетами обновления SP3 мы можем автоматизировать этот процесс.

Для этого добавим в проект новый элемент ADO.NET Entity Data Model:

Нажмем OK и нам откроется мастер создания модели. Здесь нам надо выбрать пункт Code First from database:

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

Нажмем на кнопку New Connection и в следующем окне настроек подключения выберем сервер и базу данных, с которой мы хотим работать:

После этого в окне мастера настройки модели появится выбранное подключение. И также здесь мы можем установить название подключения, которое будет использоваться в файле конфигурации App.config. Изменим его, например, на UserContext:

Нажмем Next, и на следующем шаге нам будет предложено выбрать те таблицы из бд, по которым нам надо создать модели:

И затем нажмем Finish. После этого будут сгенерированы классы моделей. Например, в моем случае по единственной таблице в бд будет сгенерирован следующий класс:

namespace AutoCodeSecond
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    using System.ComponentModel.DataAnnotations.Schema;
    using System.Data.Entity.Spatial;

    public partial class User
    {
        public int Id { get; set; }

        [Required]
        [StringLength(50)]
        public string Name { get; set; }

        public int Age { get; set; }
    }
}

И также надо отметить, что в файле App.config появилось определение подключения:

 <connectionStrings>
    <add name="UserContext" connectionString="data source=(localdb)\v11.0;initial catalog=userstoredb;
		integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" 
		providerName="System.Data.SqlClient" />
</connectionStrings>

Для полноценной работы нам осталось добавить класс контекста данных:

using System;
using System.Collections.Generic;
using System.Data.Entity;

namespace AutoCodeSecond
{
    class UserContext : DbContext
    {
		public UserContext():base("UserContext")
        { }
        public DbSet<User> Users { get; set; }
    }
}

И теперь мы можем взаимодействовать с базой данных:

using(UserContext db = new UserContext())
{
    foreach (User u in db.Users)
        Console.WriteLine("{0}.{1} - {2}", u.Id, u.Name, u.Age);
}
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850