Учебники

Entity Framework — Постоянство

Entity Framework теперь позволяет вам воспользоваться Entity Framework, не заставляя каждую часть вашего приложения быть в курсе Entity Framework, отделяя сущности от инфраструктуры. Вы можете создавать классы, которые могут сосредоточиться на своих бизнес-правилах, независимо от того, как они сохраняются (где хранятся данные и как данные передаются между вашими объектами).

Создание постоянных невежественных сущностей

В предыдущем абзаце описан метод, который не имеет глубоких знаний об источнике данных, которые он потребляет. Это подчеркивает сущность постоянного невежества, когда ваши классы и многие из наших прикладных уровней вокруг них не заботятся о том, как хранятся данные.

  • В версии Entity Framework .NET 3.5, если вы хотите использовать уже существующие классы, вы должны были изменить их, заставив их наследовать от EntityObject.

  • В .NET 4 это больше не нужно. Вам не нужно изменять свои объекты, чтобы они могли участвовать в операциях Entity Framework.

  • Это позволяет нам создавать приложения, охватывающие слабую связь и разделение интересов.

  • С помощью этих шаблонов кодирования ваши классы занимаются только своими собственными заданиями, и многие уровни вашего приложения, включая пользовательский интерфейс, не зависят от внешней логики, такой как API-интерфейсы Entity Framework, однако эти внешние API-интерфейсы могут взаимодействовать с нашими юридические лица.

В версии Entity Framework .NET 3.5, если вы хотите использовать уже существующие классы, вы должны были изменить их, заставив их наследовать от EntityObject.

В .NET 4 это больше не нужно. Вам не нужно изменять свои объекты, чтобы они могли участвовать в операциях Entity Framework.

Это позволяет нам создавать приложения, охватывающие слабую связь и разделение интересов.

С помощью этих шаблонов кодирования ваши классы занимаются только своими собственными заданиями, и многие уровни вашего приложения, включая пользовательский интерфейс, не зависят от внешней логики, такой как API-интерфейсы Entity Framework, однако эти внешние API-интерфейсы могут взаимодействовать с нашими юридические лица.

Существует два способа (подключен и отключен) при сохранении сущности с помощью Entity Framework. Оба способа имеют свое значение. В случае связанного сценария изменения отслеживаются контекстом, но в случае несвязанного сценария мы должны информировать контекст о состоянии сущности.

Связанные сценарии

Связанный сценарий — это когда объект извлекается из базы данных и изменяется в том же контексте. Для связанного сценария предположим, что у нас есть служба Windows, и мы выполняем некоторые бизнес-операции с этой сущностью, поэтому мы откроем контекст, пройдемся по всем сущностям, выполним наши бизнес-операции, а затем сохраним изменения в том же контексте, что и мы. открыл в начале.

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

class Program {

   static void Main(string[] args) {

      using (var context = new MyContext()) {

         var studentList = context.Students.ToList();

         foreach (var stdnt in studentList) {
            stdnt.FirstMidName = "Edited " + stdnt.FirstMidName;
         }

         context.SaveChanges();

         //// Display all Students from the database

         var students = (from s in context.Students
            orderby s.FirstMidName select s).ToList<Student>();

         Console.WriteLine("Retrieve all Students from the database:");

         foreach (var stdnt in students) {
            string name = stdnt.FirstMidName + " " + stdnt.LastName;
            Console.WriteLine("ID: {0}, Name: {1}", stdnt.ID, name);
         }

         Console.ReadKey();
      }
   }
}

Когда приведенный выше код скомпилирован и выполнен, вы получите следующий вывод и увидите, что отредактированное слово прикреплено перед именем, как показано в следующем выводе.

Retrieve all Students from the database: 
ID: 1, Name: Edited Edited Alain Bomer 
ID: 2, Name: Edited Edited Mark Upston 

Отключенные сценарии

Отключенный сценарий — это когда объект извлекается из базы данных и изменяется в другом контексте. Давайте предположим, что мы хотим отобразить некоторые данные на уровне представления, и мы используем какое-то n-уровневое приложение, поэтому было бы лучше открыть контекст, извлечь данные и, наконец, закрыть контекст. Поскольку здесь мы извлекли данные и закрыли контекст, извлеченные нами сущности больше не отслеживаются, и это отключенный сценарий.

Давайте посмотрим на следующий код, в котором новая отключенная сущность Student добавляется в контекст с помощью метода Add.

class Program {

   static void Main(string[] args) {

      var student = new Student {
         ID = 1001, 
         FirstMidName = "Wasim", 
         LastName = "Akram", 
         EnrollmentDate = DateTime.Parse( DateTime.Today.ToString())
      };

      using (var context = new MyContext()) {

         context.Students.Add(student);
         context.SaveChanges();

         //// Display all Students from the database

         var students = (from s in context.Students 
            orderby s.FirstMidName select s).ToList<Student>();

         Console.WriteLine("Retrieve all Students from the database:");

         foreach (var stdnt in students) {
            string name = stdnt.FirstMidName + " " + stdnt.LastName;
            Console.WriteLine("ID: {0}, Name: {1}", stdnt.ID, name);
         }

         Console.ReadKey();
      }
   }
}

Когда приведенный выше код скомпилирован и выполнен, вы получите следующий вывод.