dir.by  
  Search  
Programming, development, testing
Entity Framework (EF5, EF6) для работы с базой данных на C#
Внешний ключ (Foreign Key) и каскадное удаление
  Looked at 7908 times    
 Внешний ключ (Foreign Key) и каскадное удаление 
last updated: 15 January 2019
Внешний ключ (Foreign Key) это связь с другой таблицей.

Чтобы образовать внешний ключ нужно чтобы
Имя_свойства_в_нашем_классе
=
Имя_класса_связанной_таблицы + Имя_ключа_из_связанной_таблицы

Каскадное удаление
• Если внешний ключ определяется как int? то внешний ключ может иметь null значения и нет каскадного удаления.
• Если внешний ключ определяется как int то внешний ключ не может иметь null значения и будет каскадное удаление.
Пример1 (foreign key может быть null)
  C#  
public class UserContext : DbContext
{
     // MyConnection1 это соединение с базой данных описанное в файле web.config
     public UserContext() : base("MyConnection1")
     {
     }

     public DbSet<User> Users {get; set;}
     public DbSet<Task> Tasks { get; set; }
}

public class User
{
     public int Id {get;set;}
     public string Email {get; set;}
     public string Password{get; set;}
}

public class Task
{
     public int Id { get; set; }
     public int Price { get; set; }

     public int? UserId { get; set; } // определяем внешний ключ (int? значит может иметь null значение)
     public User User { get; set; } // это тоже необходимо для внешнего ключа
}
На заметку!
Если внешний ключ определяется как int? то внешний ключ может иметь null значения и нет каскадного удаления.
В MS Sql Server база данных выглядит так:
Пример2 (foreign key не может быть null)
  C#  
public class UserContext : DbContext
{
     // MyConnection1 это соединение с базой данных описанное в файле web.config
     public UserContext() : base("MyConnection1")
     {
     }

     public DbSet<User> Users {get; set;}
     public DbSet<Task> Tasks { get; set; }
}

public class User
{
     public int Id {get;set;}
     public string Email {get; set;}
     public string Password{get; set;}
}

public class Task
{
     public int Id { get; set; }
     public int Price { get; set; }

     public int UserId { get; set; } // определяем внешний ключ (int значит НЕ может иметь null значение)
     public User User { get; set; } // это тоже необходимо для внешнего ключа
}
На заметку!
Если внешний ключ определяется как int то внешний ключ НЕ может иметь null значения и будет каскадное удаление.
В MS Sql Server база данных выглядит так:
 
← Previous topic
Соглашения по преобразование типов, наименованию таблиц в Entity Framework
 
Next topic →
DateTime & только Date & только Time в Entity Framework
 
Your feedback ... Comments ...
   
Your Name
Your comment (www links can only be added by a logged-in user)

  Объявления  
  Объявления  
 
Что такое Entity Framework?
Типы в Entity Framework
Соглашения по преобразование типов, наименованию таблиц в Entity Framework
Внешний ключ (Foreign Key) и каскадное удаление
DateTime & только Date & только Time в Entity Framework
Code First
Code First. Мы пишем C# класс. Entity Framework по нашему C# классу → создает и заполняет таблицу в базе данных
Auto Code First. Entity Framework из существующей таблицы в базе данных → создает C# класс
Database First
Database First. Entity Framework из существующей таблицы в базе данных → создает C# класс
Model First
Model First. Мы создаем модель в Visual Studio. По модели Entity Framework → создает C# классы и Базу данных
Работа с данными
Перебор данных в Entity Framework
Добавление данных в Entity Framework
Изменение (редактирование) данных в Entity Framework
Удаление данных в Entity Framework
Инициализация и миграция базы данных
Инициализация базы данных в Entity Framework. DropCreateDatabaseAlways позволяет при каждом новом запуске заполнять базу данных заново
Выполнение миграции Базы Данных в Entity Framework (если уже кто-то раньше сделал cs файл миграции, а мне хочется обновить у себя на компютере базу данных я выполняю миграцию то есть вызываю EntityFramework\Update-Database)
Создание и выполнение миграции Базы Данных в Entity Framework (я поменял c# класс, потом вызываю EntityFramework\add-migration т.е. автоматически добавляется в проект cs файл с кодом миграции, потом вызываю EntityFramework\Update-Database т.е. выполняется файл миграции и меняется база данных)
SQL в Entity Framework
SQL команды в Entity Framework
Транзакции в Entity Framework
Управление транзакциями в Entity Framework
Дополнительные темы, вопросы
Что такое <connectionStrings> в .config файле для Entity Framework (EF5, EF6)
При вызове EntityFramework\Update-Database появляется ошибка "System.Data.SqlClient.SqlException (0x80131904). A network-related or instance-specific error occurred while establishing a connection to SQL Server."
При вызове EntityFramework\Update-Database появляется ошибка "Your startup project '...' doesn't reference Microsoft.EntityFrameworkCore.Design"
WWW сайты для изучения Entity Framework
Сайты для изучения Entity Framework

  Ваши вопросы присылайте по почте: info@dir.by  
Яндекс.Метрика