Filipenya_Katerina / Отчёт 6
.docxМИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ
Учреждение Образования
«Белорусский Государственный Университет Информатики и Радиоэлектроники»
кафедра информатики
Инструменты и средства программирования
Отчёт по лабораторной работе №6
Выполнила: студентка гр. 152002
Филипеня Екатерина Дмитриевна
Проверил:
Тычко Дмитрий Николаевич
Минск 2013
Задание
Разработать в проекте слой доступа к данным (DAL) с использованием выбранной (одной из) технологии объектно-реляционного отображения:
– LINQ to SQL;
– Entity Framework;
– NHibernate.
Листинг
//------------------------------------------------------------------------------
// <auto-generated>
// Этот код был создан из шаблона.
//
// Изменения, вносимые в этот файл вручную, могут привести к непредвиденной работе приложения.
// Изменения, вносимые в этот файл вручную, будут перезаписаны при повторном создании кода.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Data.Objects;
using System.Data.Objects.DataClasses;
using System.Data.EntityClient;
using System.ComponentModel;
using System.Xml.Serialization;
using System.Runtime.Serialization;
[assembly: EdmSchemaAttribute()]
#region Метаданные связи EDM
[assembly: EdmRelationshipAttribute("FilmCatalogueModel", "FK_Films_Directors", "Directors", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(DataAccessComponentsEF.Directors), "Films", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(DataAccessComponentsEF.Films), true)]
[assembly: EdmRelationshipAttribute("FilmCatalogueModel", "FK_Films_Duration", "Duration", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(DataAccessComponentsEF.Duration), "Films", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(DataAccessComponentsEF.Films), true)]
[assembly: EdmRelationshipAttribute("FilmCatalogueModel", "FK_Films_Genres", "Genres", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(DataAccessComponentsEF.Genres), "Films", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(DataAccessComponentsEF.Films), true)]
#endregion
namespace DataAccessComponentsEF
{
#region Контексты
/// <summary>
/// Нет доступной документации по метаданным.
/// </summary>
public partial class FilmCatalogueEntities : ObjectContext
{
#region Конструкторы
/// <summary>
/// Инициализирует новый объект FilmCatalogueEntities, используя строку соединения из раздела "FilmCatalogueEntities" файла конфигурации приложения.
/// </summary>
public FilmCatalogueEntities() : base("name=FilmCatalogueEntities", "FilmCatalogueEntities")
{
this.ContextOptions.LazyLoadingEnabled = true;
OnContextCreated();
}
/// <summary>
/// Инициализация нового объекта FilmCatalogueEntities.
/// </summary>
public FilmCatalogueEntities(string connectionString) : base(connectionString, "FilmCatalogueEntities")
{
this.ContextOptions.LazyLoadingEnabled = true;
OnContextCreated();
}
/// <summary>
/// Инициализация нового объекта FilmCatalogueEntities.
/// </summary>
public FilmCatalogueEntities(EntityConnection connection) : base(connection, "FilmCatalogueEntities")
{
this.ContextOptions.LazyLoadingEnabled = true;
OnContextCreated();
}
#endregion
#region Разделяемые методы
partial void OnContextCreated();
#endregion
#region Свойства ObjectSet
/// <summary>
/// Нет доступной документации по метаданным.
/// </summary>
public ObjectSet<Directors> Directors
{
get
{
if ((_Directors == null))
{
_Directors = base.CreateObjectSet<Directors>("Directors");
}
return _Directors;
}
}
private ObjectSet<Directors> _Directors;
/// <summary>
/// Нет доступной документации по метаданным.
/// </summary>
public ObjectSet<Duration> Duration
{
get
{
if ((_Duration == null))
{
_Duration = base.CreateObjectSet<Duration>("Duration");
}
return _Duration;
}
}
private ObjectSet<Duration> _Duration;
/// <summary>
/// Нет доступной документации по метаданным.
/// </summary>
public ObjectSet<Films> Films
{
get
{
if ((_Films == null))
{
_Films = base.CreateObjectSet<Films>("Films");
}
return _Films;
}
}
private ObjectSet<Films> _Films;
/// <summary>
/// Нет доступной документации по метаданным.
/// </summary>
public ObjectSet<Genres> Genres
{
get
{
if ((_Genres == null))
{
_Genres = base.CreateObjectSet<Genres>("Genres");
}
return _Genres;
}
}
private ObjectSet<Genres> _Genres;
#endregion
#region Методы AddTo
/// <summary>
/// Устаревший метод для добавления новых объектов в набор EntitySet Directors. Взамен можно использовать метод .Add связанного свойства ObjectSet<T>.
/// </summary>
public void AddToDirectors(Directors directors)
{
base.AddObject("Directors", directors);
}
/// <summary>
/// Устаревший метод для добавления новых объектов в набор EntitySet Duration. Взамен можно использовать метод .Add связанного свойства ObjectSet<T>.
/// </summary>
public void AddToDuration(Duration duration)
{
base.AddObject("Duration", duration);
}
/// <summary>
/// Устаревший метод для добавления новых объектов в набор EntitySet Films. Взамен можно использовать метод .Add связанного свойства ObjectSet<T>.
/// </summary>
public void AddToFilms(Films films)
{
base.AddObject("Films", films);
}
/// <summary>
/// Устаревший метод для добавления новых объектов в набор EntitySet Genres. Взамен можно использовать метод .Add связанного свойства ObjectSet<T>.
/// </summary>
public void AddToGenres(Genres genres)
{
base.AddObject("Genres", genres);
}
#endregion
}
#endregion
#region Сущности
/// <summary>
/// Нет доступной документации по метаданным.
/// </summary>
[EdmEntityTypeAttribute(NamespaceName="FilmCatalogueModel", Name="Directors")]
[Serializable()]
[DataContractAttribute(IsReference=true)]
public partial class Directors : EntityObject
{
#region Фабричный метод
/// <summary>
/// Создание нового объекта Directors.
/// </summary>
/// <param name="name">Исходное значение свойства Name.</param>
/// <param name="surname">Исходное значение свойства Surname.</param>
/// <param name="id">Исходное значение свойства Id.</param>
public static Directors CreateDirectors(global::System.String name, global::System.String surname, global::System.Guid id)
{
Directors directors = new Directors();
directors.Name = name;
directors.Surname = surname;
directors.Id = id;
return directors;
}
#endregion
#region Свойства-примитивы
/// <summary>
/// Нет доступной документации по метаданным.
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
[DataMemberAttribute()]
public global::System.String Name
{
get
{
return _Name;
}
set
{
OnNameChanging(value);
ReportPropertyChanging("Name");
_Name = StructuralObject.SetValidValue(value, false);
ReportPropertyChanged("Name");
OnNameChanged();
}
}
private global::System.String _Name;
partial void OnNameChanging(global::System.String value);
partial void OnNameChanged();
/// <summary>
/// Нет доступной документации по метаданным.
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
[DataMemberAttribute()]
public global::System.String Surname
{
get
{
return _Surname;
}
set
{
OnSurnameChanging(value);
ReportPropertyChanging("Surname");
_Surname = StructuralObject.SetValidValue(value, false);
ReportPropertyChanged("Surname");
OnSurnameChanged();
}
}
private global::System.String _Surname;
partial void OnSurnameChanging(global::System.String value);
partial void OnSurnameChanged();
/// <summary>
/// Нет доступной документации по метаданным.
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
[DataMemberAttribute()]
public global::System.Guid Id
{
get
{
return _Id;
}
set
{
if (_Id != value)
{
OnIdChanging(value);
ReportPropertyChanging("Id");
_Id = StructuralObject.SetValidValue(value);
ReportPropertyChanged("Id");
OnIdChanged();
}
}
}
private global::System.Guid _Id;
partial void OnIdChanging(global::System.Guid value);
partial void OnIdChanged();
#endregion
#region Свойства навигации
/// <summary>
/// Нет доступной документации по метаданным.
/// </summary>
[XmlIgnoreAttribute()]
[SoapIgnoreAttribute()]
[DataMemberAttribute()]
[EdmRelationshipNavigationPropertyAttribute("FilmCatalogueModel", "FK_Films_Directors", "Films")]
public EntityCollection<Films> Films
{
get
{
return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedCollection<Films>("FilmCatalogueModel.FK_Films_Directors", "Films");
}
set
{
if ((value != null))
{
((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedCollection<Films>("FilmCatalogueModel.FK_Films_Directors", "Films", value);
}
}
}
#endregion
}
/// <summary>
/// Нет доступной документации по метаданным.
/// </summary>
[EdmEntityTypeAttribute(NamespaceName="FilmCatalogueModel", Name="Duration")]
[Serializable()]
[DataContractAttribute(IsReference=true)]
public partial class Duration : EntityObject
{
#region Фабричный метод
/// <summary>
/// Создание нового объекта Duration.
/// </summary>
/// <param name="id">Исходное значение свойства Id.</param>
public static Duration CreateDuration(global::System.Guid id)
{
Duration duration = new Duration();
duration.Id = id;
return duration;
}
#endregion
#region Свойства-примитивы
/// <summary>
/// Нет доступной документации по метаданным.
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
[DataMemberAttribute()]
public Nullable<global::System.Int32> Min
{
get
{
return _Min;
}
set
{
OnMinChanging(value);
ReportPropertyChanging("Min");
_Min = StructuralObject.SetValidValue(value);
ReportPropertyChanged("Min");
OnMinChanged();
}
}
private Nullable<global::System.Int32> _Min;
partial void OnMinChanging(Nullable<global::System.Int32> value);
partial void OnMinChanged();
/// <summary>
/// Нет доступной документации по метаданным.
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
[DataMemberAttribute()]
public Nullable<global::System.Int32> Sec
{
get
{
return _Sec;
}
set
{
OnSecChanging(value);
ReportPropertyChanging("Sec");
_Sec = StructuralObject.SetValidValue(value);
ReportPropertyChanged("Sec");
OnSecChanged();
}
}
private Nullable<global::System.Int32> _Sec;
partial void OnSecChanging(Nullable<global::System.Int32> value);
partial void OnSecChanged();
/// <summary>
/// Нет доступной документации по метаданным.
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
[DataMemberAttribute()]
public Nullable<global::System.Int32> Hour
{
get
{
return _Hour;
}
set
{
OnHourChanging(value);
ReportPropertyChanging("Hour");
_Hour = StructuralObject.SetValidValue(value);
ReportPropertyChanged("Hour");
OnHourChanged();
}
}
private Nullable<global::System.Int32> _Hour;
partial void OnHourChanging(Nullable<global::System.Int32> value);
partial void OnHourChanged();
/// <summary>
/// Нет доступной документации по метаданным.
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
[DataMemberAttribute()]
public global::System.Guid Id
{
get
{
return _Id;
}
set
{
if (_Id != value)
{
OnIdChanging(value);
ReportPropertyChanging("Id");
_Id = StructuralObject.SetValidValue(value);
ReportPropertyChanged("Id");
OnIdChanged();
}
}
}
private global::System.Guid _Id;
partial void OnIdChanging(global::System.Guid value);
partial void OnIdChanged();
#endregion
#region Свойства навигации
/// <summary>
/// Нет доступной документации по метаданным.
/// </summary>
[XmlIgnoreAttribute()]
[SoapIgnoreAttribute()]
[DataMemberAttribute()]
[EdmRelationshipNavigationPropertyAttribute("FilmCatalogueModel", "FK_Films_Duration", "Films")]
public EntityCollection<Films> Films
{
get
{
return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedCollection<Films>("FilmCatalogueModel.FK_Films_Duration", "Films");
}
set
{
if ((value != null))
{
((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedCollection<Films>("FilmCatalogueModel.FK_Films_Duration", "Films", value);
}
}
}
#endregion
}
/// <summary>
/// Нет доступной документации по метаданным.
/// </summary>
[EdmEntityTypeAttribute(NamespaceName="FilmCatalogueModel", Name="Films")]
[Serializable()]
[DataContractAttribute(IsReference=true)]
public partial class Films : EntityObject
{
#region Фабричный метод
/// <summary>
/// Создание нового объекта Films.
/// </summary>
/// <param name="name">Исходное значение свойства Name.</param>
/// <param name="directorId">Исходное значение свойства DirectorId.</param>
/// <param name="genreId">Исходное значение свойства GenreId.</param>
/// <param name="durationId">Исходное значение свойства DurationId.</param>
/// <param name="id">Исходное значение свойства Id.</param>
public static Films CreateFilms(global::System.String name, global::System.Guid directorId, global::System.Guid genreId, global::System.Guid durationId, global::System.Guid id)
{
Films films = new Films();
films.Name = name;
films.DirectorId = directorId;
films.GenreId = genreId;
films.DurationId = durationId;
films.Id = id;
return films;
}
#endregion
#region Свойства-примитивы
/// <summary>
/// Нет доступной документации по метаданным.
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
[DataMemberAttribute()]
public global::System.String Name
{
get
{
return _Name;
}
set
{
OnNameChanging(value);
ReportPropertyChanging("Name");
_Name = StructuralObject.SetValidValue(value, false);
ReportPropertyChanged("Name");
OnNameChanged();
}
}
private global::System.String _Name;
partial void OnNameChanging(global::System.String value);
partial void OnNameChanged();
/// <summary>
/// Нет доступной документации по метаданным.
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
[DataMemberAttribute()]
public Nullable<global::System.Int32> Rating
{
get
{
return _Rating;
}
set
{
OnRatingChanging(value);
ReportPropertyChanging("Rating");
_Rating = StructuralObject.SetValidValue(value);
ReportPropertyChanged("Rating");
OnRatingChanged();
}
}
private Nullable<global::System.Int32> _Rating;
partial void OnRatingChanging(Nullable<global::System.Int32> value);
partial void OnRatingChanged();
/// <summary>
/// Нет доступной документации по метаданным.
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
[DataMemberAttribute()]
public global::System.Guid DirectorId
{
get
{
return _DirectorId;
}
set
{
OnDirectorIdChanging(value);
ReportPropertyChanging("DirectorId");
_DirectorId = StructuralObject.SetValidValue(value);
ReportPropertyChanged("DirectorId");
OnDirectorIdChanged();
}
}
private global::System.Guid _DirectorId;
partial void OnDirectorIdChanging(global::System.Guid value);
partial void OnDirectorIdChanged();
/// <summary>
/// Нет доступной документации по метаданным.
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
[DataMemberAttribute()]
public global::System.Guid GenreId
{
get
{
return _GenreId;
}
set
{
OnGenreIdChanging(value);
ReportPropertyChanging("GenreId");
_GenreId = StructuralObject.SetValidValue(value);
ReportPropertyChanged("GenreId");
OnGenreIdChanged();
}
}
private global::System.Guid _GenreId;
partial void OnGenreIdChanging(global::System.Guid value);
partial void OnGenreIdChanged();
/// <summary>
/// Нет доступной документации по метаданным.
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
[DataMemberAttribute()]
public global::System.Guid DurationId
{
get
{
return _DurationId;
}
set
{
OnDurationIdChanging(value);
ReportPropertyChanging("DurationId");
_DurationId = StructuralObject.SetValidValue(value);
ReportPropertyChanged("DurationId");
OnDurationIdChanged();
}
}
private global::System.Guid _DurationId;
partial void OnDurationIdChanging(global::System.Guid value);
partial void OnDurationIdChanged();
/// <summary>
/// Нет доступной документации по метаданным.
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
[DataMemberAttribute()]
public global::System.Guid Id
{
get
{
return _Id;
}
set
{
if (_Id != value)
{
OnIdChanging(value);
ReportPropertyChanging("Id");
_Id = StructuralObject.SetValidValue(value);
ReportPropertyChanged("Id");
OnIdChanged();
}
}
}
private global::System.Guid _Id;
partial void OnIdChanging(global::System.Guid value);
partial void OnIdChanged();
#endregion
#region Свойства навигации
/// <summary>
/// Нет доступной документации по метаданным.
/// </summary>
[XmlIgnoreAttribute()]
[SoapIgnoreAttribute()]
[DataMemberAttribute()]
[EdmRelationshipNavigationPropertyAttribute("FilmCatalogueModel", "FK_Films_Directors", "Directors")]
public Directors Directors
{
get
{
return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Directors>("FilmCatalogueModel.FK_Films_Directors", "Directors").Value;
}
set
{
((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Directors>("FilmCatalogueModel.FK_Films_Directors", "Directors").Value = value;
}
}
/// <summary>
/// Нет доступной документации по метаданным.
/// </summary>
[BrowsableAttribute(false)]
[DataMemberAttribute()]
public EntityReference<Directors> DirectorsReference
{
get
{
return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Directors>("FilmCatalogueModel.FK_Films_Directors", "Directors");
}
set
{
if ((value != null))
{
((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Directors>("FilmCatalogueModel.FK_Films_Directors", "Directors", value);
}
}
}
/// <summary>
/// Нет доступной документации по метаданным.
/// </summary>
[XmlIgnoreAttribute()]
[SoapIgnoreAttribute()]
[DataMemberAttribute()]
[EdmRelationshipNavigationPropertyAttribute("FilmCatalogueModel", "FK_Films_Duration", "Duration")]
public Duration Duration
{
get
{
return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Duration>("FilmCatalogueModel.FK_Films_Duration", "Duration").Value;
}
set
{
((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Duration>("FilmCatalogueModel.FK_Films_Duration", "Duration").Value = value;
}
}
/// <summary>
/// Нет доступной документации по метаданным.
/// </summary>
[BrowsableAttribute(false)]
[DataMemberAttribute()]
public EntityReference<Duration> DurationReference
{
get
{
return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Duration>("FilmCatalogueModel.FK_Films_Duration", "Duration");
}
set
{
if ((value != null))
{
((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Duration>("FilmCatalogueModel.FK_Films_Duration", "Duration", value);
}
}
}
/// <summary>
/// Нет доступной документации по метаданным.
/// </summary>
[XmlIgnoreAttribute()]
[SoapIgnoreAttribute()]
[DataMemberAttribute()]
[EdmRelationshipNavigationPropertyAttribute("FilmCatalogueModel", "FK_Films_Genres", "Genres")]
public Genres Genres
{
get
{
return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Genres>("FilmCatalogueModel.FK_Films_Genres", "Genres").Value;
}
set
{
((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Genres>("FilmCatalogueModel.FK_Films_Genres", "Genres").Value = value;
}
}
/// <summary>
/// Нет доступной документации по метаданным.
/// </summary>
[BrowsableAttribute(false)]
[DataMemberAttribute()]
public EntityReference<Genres> GenresReference
{
get
{
return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Genres>("FilmCatalogueModel.FK_Films_Genres", "Genres");
}
set
{
if ((value != null))
{
((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Genres>("FilmCatalogueModel.FK_Films_Genres", "Genres", value);
}
}
}
#endregion
}
/// <summary>
/// Нет доступной документации по метаданным.
/// </summary>
[EdmEntityTypeAttribute(NamespaceName="FilmCatalogueModel", Name="Genres")]
[Serializable()]
[DataContractAttribute(IsReference=true)]
public partial class Genres : EntityObject
{
#region Фабричный метод
/// <summary>
/// Создание нового объекта Genres.
/// </summary>
/// <param name="genre">Исходное значение свойства Genre.</param>
/// <param name="id">Исходное значение свойства Id.</param>
public static Genres CreateGenres(global::System.String genre, global::System.Guid id)
{
Genres genres = new Genres();
genres.Genre = genre;
genres.Id = id;
return genres;
}
#endregion
#region Свойства-примитивы
/// <summary>
/// Нет доступной документации по метаданным.
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
[DataMemberAttribute()]
public global::System.String Genre
{
get
{
return _Genre;
}
set
{
OnGenreChanging(value);
ReportPropertyChanging("Genre");
_Genre = StructuralObject.SetValidValue(value, false);
ReportPropertyChanged("Genre");
OnGenreChanged();
}
}
private global::System.String _Genre;
partial void OnGenreChanging(global::System.String value);
partial void OnGenreChanged();
/// <summary>
/// Нет доступной документации по метаданным.
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
[DataMemberAttribute()]
public global::System.Guid Id
{
get
{
return _Id;
}
set
{
if (_Id != value)
{
OnIdChanging(value);
ReportPropertyChanging("Id");
_Id = StructuralObject.SetValidValue(value);
ReportPropertyChanged("Id");
OnIdChanged();
}
}
}
private global::System.Guid _Id;
partial void OnIdChanging(global::System.Guid value);
partial void OnIdChanged();
#endregion
#region Свойства навигации
/// <summary>
/// Нет доступной документации по метаданным.
/// </summary>
[XmlIgnoreAttribute()]
[SoapIgnoreAttribute()]
[DataMemberAttribute()]
[EdmRelationshipNavigationPropertyAttribute("FilmCatalogueModel", "FK_Films_Genres", "Films")]
public EntityCollection<Films> Films
{
get
{
return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedCollection<Films>("FilmCatalogueModel.FK_Films_Genres", "Films");
}
set
{
if ((value != null))
{
((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedCollection<Films>("FilmCatalogueModel.FK_Films_Genres", "Films", value);
}
}
}
#endregion
}
#endregion
}
namespace DataAccessComponentsEF
{
public class DAC
{
protected delegate void Ghange(Guid id,FilmCatalogueEntities context);
protected delegate void ReadD(object par);
protected delegate void UseContext(FilmCatalogueEntities context);
protected void ChangeContext(Guid id,Ghange ch)
{
using (FilmCatalogueEntities context = new FilmCatalogueEntities())
{
ch(id,context);
context.SaveChanges();
}
}
protected object GetKey(string table,Guid id,FilmCatalogueEntities context)
{
EntityKey key = new EntityKey(table, "Id", id);
return context.GetObjectByKey(key);
}
protected void ReadData(string table,Guid id,ReadD r)
{
using (FilmCatalogueEntities context = new FilmCatalogueEntities())
{
EntityKey key = new EntityKey(table, "Id", id);
object par;
if (context.TryGetObjectByKey(key, out par))
{
r(par);
}
}
}
protected void CreateContext(UseContext r)
{
using (FilmCatalogueEntities context = new FilmCatalogueEntities())
{
r(context);
}
}
}
}
namespace DataAccessComponentsEF
{
interface IDataAccessComponents
{
void Create(Entity entity);
void Update(Guid id, Entity newentity);
void Delete(Guid id);
}
}
namespace DataAccessComponentsEF
{
public class DACDirector : DAC,IDataAccessComponents
{
private Director dir;
private List<Director> directors;
public void Create(Entity d)
{
dir = d as Director;
ChangeContext(dir._ID, AddDirector);
}
public Director Read(Guid id)
{
dir = new Director();
ReadData("FilmCatalogueEntities.Directors", id, ReadDir);
return dir;
}
public void Update(Guid id, Entity newd)
{
dir = newd as Director;
ChangeContext(id, UpDir);
}
public void Delete(Guid id)
{
ChangeContext(id, DelDir);
}
public IEnumerable<Director> ReadAll()
{
directors = new List<Director>();
CreateContext(ReadAllDir);
return directors;
}
protected void ReadAllDir(FilmCatalogueEntities context)
{
foreach (Directors d in context.Directors)
{
dir = new Director();
dir._Name = (string)d.Name;
dir._Surname = (string)d.Surname;
dir._ID = (Guid)d.Id;
directors.Add(dir);
}
}
private void ReadDir(object par)
{
Directors dirToSearch = (Directors)par;
if (dirToSearch != null)
{
dir._Name = (string)dirToSearch.Name;
dir._Surname = (string)dirToSearch.Surname;
dir._ID = (Guid)dirToSearch.Id;
}
}
private void AddDirector(Guid id, FilmCatalogueEntities context)
{
context.Directors.AddObject(new Directors() { Name = dir._Name, Surname = dir._Surname, Id = id });
}
private void UpDir(Guid id, FilmCatalogueEntities context)
{
Directors dirToUp = (Directors)GetKey("FilmCatalogueEntities.Directors", id, context);
if (dirToUp != null)
{
dirToUp.Name = dir._Name;
dirToUp.Surname = dir._Surname;
}
}
private void DelDir(Guid id, FilmCatalogueEntities context)
{
Directors dirToDel = (Directors)GetKey("FilmCatalogueEntities.Directors", id, context);
if (dirToDel != null)
{
context.DeleteObject(dirToDel);
}
}
}
}
namespace DataAccessComponentsEF
{
public class DACDuration :DAC
{
private TimeSpan dur;
private Guid durid;
public Guid Create(TimeSpan d)
{
dur = d;
durid = Guid.NewGuid();
ChangeContext(durid, AddDuration);
return durid;
}
public TimeSpan Read(Guid id)
{
dur = new TimeSpan();
durid = id;
ReadData("FilmCatalogueEntities.Duration", durid, ReadDur);
return dur;
}
public void Update(Guid id, TimeSpan d)
{
dur = d;
durid = id;
ChangeContext(id, UpDur);
}
public void Delete(Guid id)
{
durid = id;
ChangeContext(durid, DelDur);
}
public Guid Find(Guid fid)
{
durid = Guid.NewGuid();
ReadData("FilmCatalogueEntities.Films", fid, FindDur);
return durid;
}
private void ReadDur(object par)
{
Duration durToSearch = (Duration)par;
if (durToSearch != null)
{
var min = (int)durToSearch.Min;
var sec = (int)durToSearch.Sec;
var hour = (int)durToSearch.Hour;
dur = new TimeSpan(hour, min, sec);
}
}
private void FindDur(object par)
{
Films filmToSearch = (Films)par;
if (filmToSearch != null)
{
durid = (Guid)filmToSearch.DurationId;
}
}
private void AddDuration(Guid id, FilmCatalogueEntities context)
{
context.Duration.AddObject(new Duration() { Hour = dur.Hours, Min = dur.Minutes, Sec = dur.Seconds, Id = id });
}
private void UpDur(Guid id, FilmCatalogueEntities context)
{
Duration durToUp = (Duration)GetKey("FilmCatalogueEntities.Duration", id, context);
if (durToUp != null)
{
durToUp.Hour = dur.Hours;
durToUp.Min = dur.Minutes;
durToUp.Sec = dur.Seconds;
}
}
private void DelDur(Guid id, FilmCatalogueEntities context)
{
Duration durToDel = (Duration)GetKey("FilmCatalogueEntities.Duration", id, context);
if (durToDel != null)
{
context.DeleteObject(durToDel);
}
}
}
}
namespace DataAccessComponentsEF
{
public class DACFilm : DAC, IDataAccessComponents
{
private DACDuration dacdur = new DACDuration();
private Film film;
private List<Film> catalogue;
private Guid durid;
public void Create(Entity f)
{
film = f as Film;
durid = dacdur.Create(film._Duration);