Код програми
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'))
