Допустим, у меня есть класс Book
, где содержатся поля Id
, Name
и Author
. И есть класс User
, у которого есть поля List<Book> Books
и Name
.
Как создать такую структуру в БД? Получатся две таблицы: Book
и User
. Но как добавить в поле List<Book>
? Или только создавать новую таблицу с соответствиями?
Делается это очень легко.
1) Создаем сущности:
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set;}
public virtual ICollection<Book> Books { get; set; }
public User()
{
Books = new List<Book>();
}
}
public class Book
{
public int Id {get; set;}
public string Name {get; set;}
}
2) Создаем класс контекста, используя его мы будем взаимодействовать с БД:
public class EfDbContext : DbContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
// Говорим EF, что сущность User может иметь много Book.
modelBuilder.Entity<User>().HasMany(p => p.Books);
}
}
3) Указываем строку подключения в файле app.config
. Обратите внимание, что имя стоки подключения такое же как и у класса контекста, в этом случае EF
автоматически обнаружит строку и станет ее использовать:
<connectionStrings>
<add name="EfDbContext" connectionString="Data Source=.; Initial Catalog=MyDataBase; Integrated Security=True;" providerName="System.Data.SqlClient" />
</connectionStrings>
4) Используем:
static void Main(string[] args)
{
var context = new EfDbContext();
// Создаем сущности.
var book = new Book()
{
Name = "Война и Мир"
};
var user = new User()
{
Name = "Вася",
Age = 15
};
// Добавляем книгу пользователю.
user.Books.Add(book);
// Добавлеям пользователя в контекст.
context.Set<User>().Add(user);
// Сохраняем изменения.
context.SaveChanges();
Console.ReadKey();
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок