powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Помогите разобраться с code first
6 сообщений из 6, страница 1 из 1
Помогите разобраться с code first
    #38116513
netroll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообщем , я как-то понимаю что это такое , описываешь переменные , а потом в базе генит твой код , кто-то может помочь , описать по этапно что как делать ?

Буду ооочень благодарен.
...
Рейтинг: 0 / 0
Помогите разобраться с code first
    #38116541
Alexey Dranichnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netroll,

Примерно так:

1. Создаешь класс
Код: c#
1.
2.
3.
4.
5.
6.
class Person{
  // это PK имя должно быть или Id или PersonId (т.е. ИмяКлассаID)
  public int Id {get;set;}
  public string FirstName {get;set;}
  public string LastName {get;set;}
}



2. В PMC выполни: "Install-Package EntityFramework" будет установлен EF, на сегодня v5.0

3. Создаешь класс
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
using System.Data.Entity;

class Context: DbContext{
  public DbSet<Person> People { get; set; }
  // public Context(): base("databasename") {}
  // здесь можешь указать имя базы или имя раздела connectionString в App.config
  // тут же (уже в теле конструктора) можешь задать дополнительные параметры гугли: FluentAPI
  // то же самое можно сделать используя DataAnnotations
}



4. В Main пишешь:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
// using - откроет и гарантировано закроет соединение
using (var context = new Context()){
  // создаем экземпляр Person
  var julie = new Person() {FirstName ="Julie", LastName = "Lerman" };
  // добавляем экземпляр в наш контекст
  context.People.Add(Julie);
  // сохраняем все изменения контекста в БД
  context.SaveChanges();

  // вывести на экран
  forech(var person in context.People){
    Console.Writeline("{0} {1}", person.FirstName, person.LastName);
  }
}



Вот как-то так в общих чертах
Подробно:
http://msdn.microsoft.com/en-US/data/ef
http://msdn.microsoft.com/ru-ru/magazine/hh126815.aspx
...
Рейтинг: 0 / 0
Помогите разобраться с code first
    #38116575
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Dranichnikovэто PK имя должно быть или Id или PersonId (т.е. ИмяКлассаID
См. атрибут Key
...
Рейтинг: 0 / 0
Помогите разобраться с code first
    #38116627
Фотография Местный король Делфей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
йа по молодости примерно так делал

контекст
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
namespace DAL.Context
{
    //контекст - можно сказать некий unit-of-work
    public class MyDBContext : DbContext
    {
        //сущности (таблицы бд) - фактически репозитории
        public DbSet<Entities.MyTable> MyTable { get; set; }

        public MyDBContext(string connectionString)
            : base(connectionString)
        {
            Database.SetInitializer<MyDBContext>(null);
        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            //в дальнейшем будет производиться конфигурирование сущности через fluent api
            modelBuilder.Configurations.Add(new DAL.EntityConfiguration.MyTableConfiguration());
            base.OnModelCreating(modelBuilder);
        }
    }
}



конфигурация
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
namespace DAL.EntityConfiguration
{
    internal class MyTableConfiguration : EntityTypeConfiguration<Entities.MyTable>
    {
        public MyTableConfiguration ()
            : base()
        {
            HasKey(m => m.ID);
            Property(m => m.ID).
                HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity).
                IsRequired();
            ToTable("MyTable");
        }
    }
}



собсно сама сущнсть
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
namespace Entities
{
    public class MyTable
    {
        public int ID { get; set; }
        public string Name { get; set; }
    }
}

...
Рейтинг: 0 / 0
Помогите разобраться с code first
    #38116631
Фотография Местный король Делфей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Местный король Делфеййа по молодости примерно так делал
в дальнейшем это все можно обернуть дженерик-интерфейсом кастомного репозитория, которые в свою очередь загнать в кастомный юнит-оф-ворк. но это уже дело вкуса и юнит-тестирования
...
Рейтинг: 0 / 0
Помогите разобраться с code first
    #38116849
netroll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если кому не трудно , стукните в скайпик , мне просто бывает нужна помощь (доставать не буду)
dumitrashic


Буду очень благодарен
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Помогите разобраться с code first
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]