Анотація даних і гнучкий АРІ CodFirst. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Анотація даних і гнучкий АРІ CodFirst.

Поиск

Останні версії Entity Framework підтримують використання так званих анотацій даних, що використовуються для задання правил валідації, а також для визначення зв’язків між класами та таблицями в БД. Всі анотації реалізовані у вигляді атрибутів, які можна присвоювати відповідним властивостям класів чи самим класам.

Перелік атрибутів, які найчастіше використовуються:

· [Key] – визначення первинного ключа в БД

· [StringLength] – мінімальна і максимальна довжина стрічки (використовується тільки для валідації)

· [MaxLength] – можна використовувати замість атрибуту StringLength для задання максимальної довжини стрічки

· [ConcurrencyCheck] – активує перевірку конкурентного доступу

· [Required] – встановлює прапорець обов’язкового значення (в БД колонка позначається як not null)

· [Timestamp] – прапорець для колонок, які використовуються в якості часового маркера при перевірках конкурентного доступу

· [Column] – використовується для задання імені колонки (за замовчуванням використовується ім’я властивості), також можна використовувати для встановлення позиції колонки

· [Table] – використовується для задання імені таблиці (за замовчування таблиця називається згідно з іменем класу)

· [DatabaseGenerated] – властивості з даним атрибутом будуть генеруватись БД (допустимі значення: Computed, Identity, None)

· [NotMapped] – використовується у випадках, коли певну властивість класу необхідно виключити з проекції на таблицю БД.

· [ForeignKey] і [InverseProperty] – колонки, що визначають зовнішні ключі

Анотації даних – зручний і швидкий спосіб задання правил валідації і структур зв’язків, однак він не забезпечує можливості використання повної потужності Code First. Існує більш гнучкий програмний спосіб опису структур і залежностей між ними – це АРІ Code First. Для його використання необхідно в класі контексту реалізувати метод OnModelCreating.

Валідація даних.

Валідація даних – надзвичайно важлива частина процесу розробки ПЗ. Необхідно забезпечити високу якість і цілісність даних. Необхідно уникати збереження пошкоджених чи неправильних даних, які можуть привести до хибної поведінки системи.

Аудит даних.

Entity Framework забезпечує потужний механізм аудиту всіх даних, які використовуються в моделі. Це дає можливість бачити і працювати з історією змін, відміняти зміни повертаючись до попереднього значення, чи вирішувати проблеми конкурентного доступу.

Entity Framework забезпечує доступ до наступних властивостей кожної з сутностей:

· Значення в БД (Database value)

· Початкове значення (Original value)

· Поточне значення (Current value)

Індивідуальне завдання

Пункт 6

Пункт 9

А) Додати папку ..//trunk/_GN_/_TN_/_SLN_/_LNUM_/FolderB/

Б) Видалити файл ..//trunk/_GN_/_TN_/_SLN_/_LNUM_/FolderA/FileB.txt

В) Видалити файл ..//trunk/_GN_/_TN_/_SLN_/_LNUM_/DiretoryA/FileB.txt

Г) В файли ..//trunk/_GN_/_TN_/_SLN_/_LNUM_/FolderA/FileA.txt i ..//trunk/_GN_/_TN_/_SLN_/_LNUM_/FolderA/FileC.txt внести довільний текст.

А) Редагувати текст у файлі

 ..//trunk/_GN_/_TN_/_SLN_/_LNUM_/FolderA/FileA.txt

Б) Видалити файл ..//trunk/_GN_/_TN_/_SLN_/_LNUM_/FolderA/FileC.txt

В) Додати файл ..//trunk/_GN_/_TN_/_SLN_/_LNUM_/DiretoryA/temp.txt

 Результати виконання

Revision: 12

Author: N_Olya

Date: Monday, October 01, 2012 8:14:48 PM

Message:

 

----

Added : /Tags/T2 (Copy from path: /trunk, Revision, 11)

 

Revision: 11

Author: N_Olya

Date: Monday, October 01, 2012 8:13:26 PM

Message:

 

----

Modified : /trunk

Added : /trunk/KН-33/Варіант 1/Нарушинська/Лабораторна 1/Directory A/temp.txt (Copy from path: /Branches/b1/KН-33/Варіант 1/Нарушинська/Лабораторна 1/Directory A/temp.txt, Revision, 10)

Modified : /trunk/KН-33/Варіант 1/Нарушинська/Лабораторна 1/Folder A/File A.txt

Deleted : /trunk/KН-33/Варіант 1/Нарушинська/Лабораторна 1/Folder A/File C.txt

 

Revision: 10

Author: N_Olya

Date: Monday, October 01, 2012 8:07:16 PM

Message:

 

----

Added : /Branches/b1/KН-33/Варіант 1/Нарушинська/Лабораторна 1/Directory A/temp.txt

Modified : /Branches/b1/KН-33/Варіант 1/Нарушинська/Лабораторна 1/Folder A/File A.txt

Deleted : /Branches/b1/KН-33/Варіант 1/Нарушинська/Лабораторна 1/Folder A/File C.txt

 

Revision: 9

Author: N_Olya

Date: Monday, October 01, 2012 8:01:16 PM

Message:

 

----

Added : /Branches/b1 (Copy from path: /trunk, Revision, 8)

 

Revision: 8

Author: N_Olya

Date: Monday, October 01, 2012 7:59:31 PM

Message:

 

----

Added : /Tags/t1 (Copy from path: /trunk, Revision, 7)

 

Revision: 7

Author: N_Olya

Date: Monday, October 01, 2012 7:57:14 PM

Message:

 

----

Deleted : /Tags/t1

 

Revision: 6

Author: N_Olya

Date: Monday, October 01, 2012 7:55:33 PM

Message:

 

----

Deleted : /Branches/b1

Deleted : /trunk/KН-33/Варіант 1/Нарушинська/1.10.2012

Deleted : /trunk/KН-33/Варіант 1/Нарушинська/Directory A

Deleted : /trunk/KН-33/Варіант 1/Нарушинська/Folder A

Added : /trunk/KН-33/Варіант 1/Нарушинська/Лабораторна 1/1.10.2012

Added : /trunk/KН-33/Варіант 1/Нарушинська/Лабораторна 1/1.10.2012/1.txt

Added : /trunk/KН-33/Варіант 1/Нарушинська/Лабораторна 1/Directory A

Added : /trunk/KН-33/Варіант 1/Нарушинська/Лабораторна 1/Directory A/File A.txt

Added : /trunk/KН-33/Варіант 1/Нарушинська/Лабораторна 1/Directory A/File C.txt

Added : /trunk/KН-33/Варіант 1/Нарушинська/Лабораторна 1/Folder A

Added : /trunk/KН-33/Варіант 1/Нарушинська/Лабораторна 1/Folder A/File A.txt

Added : /trunk/KН-33/Варіант 1/Нарушинська/Лабораторна 1/Folder A/File C.txt

 

Revision: 5

Author: N_Olya

Date: Monday, October 01, 2012 7:44:51 PM

Message:

перше розгалуження

----

Added : /Branches/b1 (Copy from path: /trunk, Revision, 4)

 

Revision: 4

Author: N_Olya

Date: Monday, October 01, 2012 7:41:27 PM

Message:

перший таг

----

Added : /Tags/t1 (Copy from path: /trunk, Revision, 3)

 

Revision: 3

Author: N_Olya

Date: Monday, October 01, 2012 7:37:55 PM

Message:

 

----

Deleted : /trunk/KН-33/Варіант 1/Нарушинська/Directory A/File B.txt

Modified : /trunk/KН-33/Варіант 1/Нарушинська/Folder A/File A.txt

Deleted : /trunk/KН-33/Варіант 1/Нарушинська/Folder A/File B.txt

Modified : /trunk/KН-33/Варіант 1/Нарушинська/Folder A/File C.txt

Added : /trunk/KН-33/Варіант 1/Нарушинська/Лабораторна 1/Folder B

 

Revision: 2

Author: N_Olya

Date: Monday, October 01, 2012 7:31:39 PM

Message:

 

----

Added : /Branches

Added : /Tags

Added : /trunk/KН-33

Added : /trunk/KН-33/Варіант 1

Added : /trunk/KН-33/Варіант 1/Shared.txt

Added : /trunk/KН-33/Варіант 1/Нарушинська

Added : /trunk/KН-33/Варіант 1/Нарушинська/1.10.2012

Added : /trunk/KН-33/Варіант 1/Нарушинська/1.10.2012/1.txt

Added : /trunk/KН-33/Варіант 1/Нарушинська/Directory A

Added : /trunk/KН-33/Варіант 1/Нарушинська/Directory A/File A.txt

Added : /trunk/KН-33/Варіант 1/Нарушинська/Directory A/File B.txt

Added : /trunk/KН-33/Варіант 1/Нарушинська/Directory A/File C.txt

Added : /trunk/KН-33/Варіант 1/Нарушинська/Folder A

Added : /trunk/KН-33/Варіант 1/Нарушинська/Folder A/File A.txt

Added : /trunk/KН-33/Варіант 1/Нарушинська/Folder A/File B.txt

Added : /trunk/KН-33/Варіант 1/Нарушинська/Folder A/File C.txt

Added : /trunk/KН-33/Варіант 1/Нарушинська/Лабораторна 1

Added : /trunk/KН-33/Варіант 1/Нарушинська/Лабораторна 1/Ольга

Added : /trunk/KН-33/Варіант 1/Нарушинська/Лабораторна 1/Ольга/01.10.2012.txt

 

Revision: 1

Author: www-data

Date: Sunday, September 18, 2011 4:27:08 PM

Message:

Automatically created readme.textile and /trunk directory. We recommend you to put all your code there.

----

Added : /readme.textile

Added : /trunk

 

Варіант

Завдання для 1го студента

Таблиці:

· Інститути,

· Кафедри,

· Викладачі

Зв'язки:

· Інстититут – кафедра = 1-N

· кафедра – Викладачі = 1-N

 

1. Згенерований скрипт створення БД.

USE [lab2]

GO

/****** Object: Table [dbo].[Institutes] Script Date: 10/23/2012 20:07:31 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE TABLE [dbo].[Institutes](

           [Insitute_Id] [int] IDENTITY(1,1) NOT NULL,

           [Insitute_Name] [nchar](50) NOT NULL,

 CONSTRAINT [PK_Institutes] PRIMARY KEY CLUSTERED

(

           [Insitute_Id] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

GO

/****** Object: Table [dbo].[Kafedras] Script Date: 10/23/2012 20:07:31 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE TABLE [dbo].[Kafedras](

           [Kafedra_Id] [int] IDENTITY(1,1) NOT NULL,

           [Kafedra_Name] [nchar](50) NOT NULL,

           [Institutes_ID] [int] NOT NULL,

 CONSTRAINT [PK_Kafedras] PRIMARY KEY CLUSTERED

(

           [Kafedra_Id] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

GO

/****** Object: Table [dbo].[Teachers] Script Date: 10/23/2012 20:07:31 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE TABLE [dbo].[Teachers](

           [Teacher_Id] [int] IDENTITY(1,1) NOT NULL,

           [First_Name] [nchar](25) NOT NULL,

           [Last_Name] [nchar](25) NOT NULL,

           [Staj] [int] NULL,

           [Stupin] [nchar](25) NOT NULL,

           [Kaferdras] [int] NOT NULL,

 CONSTRAINT [PK_Teachers] PRIMARY KEY CLUSTERED

(

           [Teacher_Id] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

GO

/****** Object: ForeignKey [FK_Kafedras_Institutes] Script Date: 10/23/2012 20:07:31 ******/

ALTER TABLE [dbo].[Kafedras] WITH CHECK ADD CONSTRAINT [FK_Kafedras_Institutes] FOREIGN KEY([Institutes_ID])

REFERENCES [dbo].[Institutes] ([Insitute_Id])

ON UPDATE CASCADE

ON DELETE CASCADE

GO

ALTER TABLE [dbo].[Kafedras] CHECK CONSTRAINT [FK_Kafedras_Institutes]

GO

/****** Object: ForeignKey [FK_Teachers_Kafedras] Script Date: 10/23/2012 20:07:31 ******/

ALTER TABLE [dbo].[Teachers] WITH CHECK ADD CONSTRAINT [FK_Teachers_Kafedras] FOREIGN KEY([Kaferdras])

REFERENCES [dbo].[Kafedras] ([Kafedra_Id])

ON UPDATE CASCADE

ON DELETE CASCADE

GO

ALTER TABLE [dbo].[Teachers] CHECK CONSTRAINT [FK_Teachers_Kafedras]

GO

2)Скрипти для заповнення БД тестовою інформацією

USE [lab2]

GO

/****** Object: Table [dbo].[Institutes] Script Date: 10/23/2012 19:53:50 ******/

insert into [dbo].Institutes ([Insitute_Name]) values ('Example1')

insert into [dbo].Kafedras ([Kafedra_Name],[Institutes_ID]) values ('Kafedra1',@@IDENTITY)

insert into [dbo].Teachers ([First_Name],[Last_Name],[Staj],[Stupin],[Kaferdras])

values ('Valera','OLOLO',10,'Docent',@@IDENTITY)

insert into [dbo].Institutes ([Insitute_Name]) values ('Example2')

insert into [dbo].Kafedras ([Kafedra_Name],[Institutes_ID]) values ('Kafedra2',@@IDENTITY)

insert into [dbo].Teachers ([First_Name],[Last_Name],[Staj],[Stupin],[Kaferdras])

values ('Valera1','OLOLO1',20,'Docent1',@@IDENTITY)

insert into [dbo].Institutes ([Insitute_Name]) values ('Example3')

insert into [dbo].Kafedras ([Kafedra_Name],[Institutes_ID]) values ('Kafedra3',@@IDENTITY)

insert into [dbo].Teachers ([First_Name],[Last_Name],[Staj],[Stupin],[Kaferdras])

values ('Valera3','OLOLO',1,'Docent3',@@IDENTITY)

insert into [dbo].Kafedras ([Kafedra_Name],[Institutes_ID]) values ('Kafedra4',2)

insert into [dbo].Teachers ([First_Name],[Last_Name],[Staj],[Stupin],[Kaferdras])

values ('Vasya','Blablabla',1,'Aspirant',@@IDENTITY)

insert into [dbo].Teachers ([First_Name],[Last_Name],[Staj],[Stupin],[Kaferdras])

values ('Vova','Bebebe',1,'Aspirant2',4)

3) Код програми для роботи з ORM

using System;

using InsituteORM;

 

namespace DataOutput

{

class Program

{

   static void Main(string[] args)

   {

       using (InsituteORM.blablablaEntities ins = new blablablaEntities())

       {

           foreach (Institute instit in ins.Institutes)

           {

               Console.WriteLine("Intitute :{0}", instit.Insitute_Name);

               foreach (Kafedra kfdr in instit.Kafedras)

               {

                   Console.WriteLine("\t Kafedra :{0}", kfdr.Kafedra_Name);

                   foreach (Teacher tch in kfdr.Teachers)

                   {

                       Console.WriteLine("\t\t Teacher: \n\t\t Name - {0}, \n\t\t Surname - {1}, \n\t\t Staj - {2}, \n\t\t Stupin - {3}", tch.First_Name, tch.Last_Name, tch.Staj, tch.Stupin);

                   }

               }

               Console.WriteLine("-------------------------");

           }

       }

       Console.ReadKey();

   }

 

}

}

 

Код програми

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Data.Entity;

using System.Data.EntityModel;

using System.ComponentModel.DataAnnotations;

 

namespace Institutes

{

class DataContext :DbContext

{

   public DataContext() : base("Olichka") { }

   public DbSet<Institute> Institute { get; set; }

   public DbSet<Kafedra> Kafedra { get; set; }

   public DbSet<Teacher> Teacher { get; set; }

}

}

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.ComponentModel.DataAnnotations;

using System.Data.Entity;

 

namespace Institutes

{

 public class Institute

{

[Key]

public int instituteID { get; set; }

[MaxLength(50, ErrorMessage = "Невірна назва інституту (не більше 50)")]

[MinLength(2, ErrorMessage = "Невірна назва інституту (не менше 2)")]

public string InstituteName { get; set; }

public virtual ICollection<Kafedra> Kafedras { get; set; }

}

}

 

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.ComponentModel.DataAnnotations;

using System.Data.Entity;

 

namespace Institutes

{

 public class Kafedra

{

   [Key]

   public int kafedraID { get; set; }

   [MaxLength(50, ErrorMessage = "Невірна назва кафедри (не більше 50)")]

   [MinLength(2, ErrorMessage = "Невірна назва кафедри (не менше 2)")]

   public string KafedraName { get; set; }

   public virtual ICollection<Teacher> Teachers { get; set; }

}

}

 

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace Institutes

{

public class OperationsDB

{

   public byte Menu()

   {

      Console.WriteLine("1. Insert");

       Console.WriteLine("2. Delete");

       Console.WriteLine("3. Update");

       Console.WriteLine("4. Search");

       byte menuItem=Convert.ToByte(Console.ReadLine());

       switch (menuItem){

           case 0: Menu();

               break;

           case 1:

               InsertInstitutes();

               Console.ReadKey();

               Menu();

               break;

           case 2://Delete

               SwitchDelete();

               Console.ReadKey();

               Menu();

               break;

           case 3://Update

               UpdateInstitutes();

               Console.ReadKey();

               Menu();

               break;

           case 4://Search

               SwitchSearch();

               Console.ReadKey();

               Menu();

               break;

           default: menuItem=0;break;

           }

       return (menuItem);

   }

   void InsertInstitutes()

   {

       using (var dc = new DataContext())

       {

           Console.WriteLine("Input name of Insitute");

           var institutes = new Institute() { InstituteName = Console.ReadLine()};

           dc.Institute.Add(institutes);

           try

           {

               dc.SaveChanges();

               Console.WriteLine("All right, your data was inserted");

           }

           catch (Exception ex)

           {

               Console.WriteLine(ex.Message);

           }

       }

   }

   void DeleteInstitutes()

    {

        using (var dc = new DataContext())

        {

            Console.WriteLine("Input name of Insitute");

            string nameInst = Console.ReadLine();

            var inst= dc.Institute.First(i=>i.InstituteName==nameInst);

            dc.Institute.Remove(inst);

            try

            {

                dc.SaveChanges();

                Console.WriteLine("All right, your data was deleted");

            }

            catch (Exception ex)

            {

                Console.WriteLine(ex.Message);

            }

        }

    }

   void UpdateInstitutes()

   {

       using (var dc = new DataContext())

       {

           Console.WriteLine("Input name of Insitute");

           string nameInst = Console.ReadLine();

           var inst = dc.Institute.First(i => i.InstituteName == nameInst);

           Console.WriteLine("Input new name of Insitute");

           string newNameInst = Console.ReadLine();

           inst.InstituteName = newNameInst;

           try

           {

               dc.SaveChanges();

               Console.WriteLine("All right, your data was update");

           }

           catch (Exception ex)

           {

               Console.WriteLine(ex.Message);

           }

       }

   }

   void SearchInstitutes()

   {

       using (var dc = new DataContext())

       {

           Console.WriteLine("Input name of Insitute");

           string nameInst = Console.ReadLine();

           var inst = dc.Institute.First(i => i.InstituteName == nameInst);

           try

           {

               Console.WriteLine("ID : {0}, Name: {1}",inst.instituteID.ToString(),inst.InstituteName.ToString());

           }

           catch (Exception ex)

           {

               Console.WriteLine(ex.Message);

           }

       }

   }

   void DeleteTeachers()

   {

       using (var dc = new DataContext())

       {

           Console.WriteLine("Input Teacher Last Name");

           string nameTeacher = Console.ReadLine();

           var inst = dc.Teacher.First(i => i.LastName == nameTeacher);

           dc.Teacher.Remove(inst);

           try

           {

               dc.SaveChanges();

               Console.WriteLine("All right, your data was deleted");

           }

           catch (Exception ex)

           {

               Console.WriteLine(ex.Message);

           }

       }

   }

   void SwitchDelete()

   {

       Console.WriteLine("1. Delete institute");

       Console.WriteLine("2. Delete teacher");

       byte switchCase = Convert.ToByte(Console.ReadLine());

       switch (switchCase)

       {

           case 1: DeleteInstitutes(); break;

           case 2: DeleteTeachers(); break;

           default: SwitchDelete(); break;

       }

   }

  void SwitchSearch()

   {

       Console.WriteLine("1. Search institute");

       Console.WriteLine("2. Search kafedra");

       byte switchCase = Convert.ToByte(Console.ReadLine());

       switch (switchCase)

       {

           case 1: SearchInstitutes(); break;

           case 2: SearchKafedra(); break;

           default: SwitchSearch(); break;

       }

   }

   void SearchKafedra()

   {

       using (var dc = new DataContext())

        {

                   Console.WriteLine("Input name of Kafedra");

                   string nameInst = Console.ReadLine();

                   var inst = dc.Kafedra.Where(b => b.KafedraName == nameInst);

           try

           {

               foreach (var ss in inst)

               {

                   Console.WriteLine("ID : {0}, Name: {1}", ss.kafedraID.ToString(), ss.KafedraName.ToString());

               }

           }

           catch (Exception ex)

           {

               Console.WriteLine(ex.Message);

           }

       }

   }

}

}

 

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.ComponentModel.DataAnnotations;

using System.Data.Entity;

 

namespace Institutes

{

 public class Teacher

{

   [Key]

   public int teacherID { get; set; }

   [MaxLength(50, ErrorMessage = "Невірне ім'я (не більше 50)")]

   [MinLength(3, ErrorMessage = "Невірне ім'я (не менше 3)")]

   public string FirstName { get; set; }

   [MaxLength(50, ErrorMessage = "Невірне прізвище (не більше 50)")]

   [MinLength(3, ErrorMessage = "Невірне прізвище (не менше 3)")]

   public string LastName { get; set; }

   public int Staj { get; set; }

}

}

 

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace Institutes

{

public class Operations

{

public string Validation(string strText)

{

     string result = "Дані було додано!";

     using (var data_context = new DataContext())

     {

         var inst = new Institute() { InstituteName = strText };

         data_context.Institute.Add(inst);

         try

         {

             data_context.SaveChanges();

         }

         catch

         {

             var validerr = data_context.GetValidationErrors()

                 .Where(ve => !ve.IsValid)

                 .SelectMany(ve => ve.ValidationErrors);

             foreach (var error in validerr)

             {

                 result = error.ErrorMessage;

             }

         }

     }

     return (result);

}

 

public void AuditR_Net()

{

     using (var data_context = new DataContext())

     {

         Console.WriteLine("AUDIT----------------");

         Console.WriteLine("Институты:");

         var inst_A = data_context.Institute.Find(1);

         using (var data_contextDb = new DataContext())

         {

             data_contextDb.Database.ExecuteSqlCommand("Update Institutes Set InstituteName = InstituteName + '_DB' Where instituteID=1");

         }

         inst_A.InstituteName = inst_A.InstituteName + "_Memory";

         string value = data_context.Entry(inst_A).Property(m => m.InstituteName).OriginalValue;

         Console.WriteLine(string.Format("Original Value : {0}", value));

 

         value = data_context.Entry(inst_A).Property(m => m.InstituteName).CurrentValue;

         Console.WriteLine(string.Format("Current Value : {0}", value));

         value = data_context.Entry(inst_A).GetDatabaseValues().GetValue<string>("InstituteName");

         Console.WriteLine(string.Format("DB Value : {0}", value));

 

         Console.WriteLine("Кафедры:");

         var inst_B = data_context.Kafedra.Find(1);

         using (var data_contextDb = new DataContext())

         {

             data_contextDb.Database.ExecuteSqlCommand("Update Kafedras Set KafedraName = KafedraName + '_DB' Where kafedraID=1");

         }

         inst_B.KafedraName = inst_B.KafedraName + "_Memory";

         value = data_context.Entry(inst_B).Property(m => m.KafedraName).OriginalValue;

         Console.WriteLine(string.Format("Original Value : {0}", value));

 

         value = data_context.Entry(inst_B).Property(m => m.KafedraName).CurrentValue;

         Console.WriteLine(string.Format("Current Value : {0}", value));

         value = data_context.Entry(inst_B).GetDatabaseValues().GetValue<string>("KafedraName");

         Console.WriteLine(string.Format("DB Value : {0}", value));

     }

}

 

 

}

}

 

 

Код міграції

namespace Institutes.Migrations

{

using System;

using System.Data.Entity.Migrations;

   

public partial class initialss : DbMigration

{

   public override void Up()

   {

       AddColumn("dbo.Teachers", "Type", c => c.String());

   }

       

   public override void Down()

   {

       DropColumn("dbo.Teachers", "Type");

   }

}

}

 

namespace Institutes.Migrations

{

using System;

using System.Data.Entity.Migrations;

   

 public partial class initial : DbMigration

{

   public override void Up()

   {

       AlterColumn("dbo.Institutes", "InstituteName", c => c.String(maxLength: 40));

   }

       

   public override void Down()

   {

       AlterColumn("dbo.Institutes", "InstituteName", c => c.String(maxLength: 50));

   }

}

}

Рис.1.Робота з міграціями

Код скриптаINITIAL

 

DECLARE @var0 nvarchar(128)

SELECT @var0 = name

FROM sys.default_constraints

WHERE parent_object_id = object_id(N'dbo.Teachers')

AND col_name(parent_object_id, parent_column_id) = 'Type';

IF @var0 IS NOT NULL

EXECUTE('ALTER TABLE [dbo].[Teachers] DROP CONSTRAINT ' + @var0)

ALTER TABLE [dbo].[Teachers] DROP COLUMN [Type]

DELETE [dbo].[__MigrationHistory]

WHERE (([MigrationId] = '201212181851057_initialss') and ([ContextKey] = 'Institutes.Migrations.Configuration'))

 

Результати :

Рис.2.Результати виконання програми.

Рис.3. Створена БД.

Рис.4.Меню

Рис.5.Додавання даних

Рис.6.пошук даних

Рис.6.Видалення даних

Рис.7.Модифікація даних

Рис.8.Пошук даних по кафедрах

 

Висновок:

 Виконуючи дану РГР я ознайомилася :

- з системами контролю версій та централізованим репозиторієм на прикладі клієнтської частини системи контролю версій Turtoise SVN;

- з структурованою мовою запитів SQL та з середовищем розробки баз даних Microsoft SQL Server 2008, здобула навики роботи в IDE Visual Studio 2010 з використанням об’єктно-реляційної проекції Entity Framework;

- з структурованою мовою запитів SQL та з середовищем розробки баз даних Microsoft SQL Server 2008, здобула навики роботи в IDE Visual Studio 2010 з використанням об’єктно-реляційної проекції Entity Framework.  

 



Поделиться:


Последнее изменение этой страницы: 2024-06-27; просмотров: 9; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.222.99.206 (0.011 с.)