Чтение онлайн

на главную - закладки

Жанры

Шрифт:

get { return address; }

set { address = value; }

}

}

public partial class Order : IOrder {

public Guid OrderId {

get { return orderId; }

set { orderld = value; }

}

public Guid Customerld {

get { return customerId; }

set { customerId = value; }

}

public Guid ProductId {

get { return productId; }

set { productId = value; }

}

public int Count {

get { return count; }

set { count = value; }

}

public DateTime OrderDateTime {

get { return orderDateTime; }

set { orderDateTime = value; }

}

}

public partial class Product : IProduct {

public Guid ProductId {

get { return productId; }

set { productId = value; }

}

public string Name {

get { return name; }

set { name = value; }

}

public bool IsAvailable {

get { return isAvailable; }

set { isAvailable = value; }

}

public decimal Cost {

get { return cost; }

set { cost = value; }

}

}

На

этом этапе существует еще одна полезная возможность, которую предлагает инъекция дополнительного кода: вы можете назначать имена для свойств интерфейса, не привязываясь к именам, которые определены в базе данных. Скажем, для поля cost таблицы Products мы могли бы задать другое название, например, ProductCost.

После реализации интерфейсов создадим простейшие хранилища и сервисы, для этого сначала объявим их интерфейсы:

public interface ICustomerRepository {

ICustomer GetCustomerById(Guid customerId);

IEnumerable<ICustomer> GetCustomersByProduct(Guid productId);

}

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

public interface IOrderRepository {

IOrder GetOrderById(Guid orderId);

IEnumerable<IOrder> GetCustomerOrders(Guid customerId);

}

Хранилище для заказов позволит выбирать заказ по идентификатору и список заказов определенного заказчика.

public interface IProductRepository {

IProduct GetProductById(Guid productId);

IEnumerable<IProduct> GetAvailableProducts;

IEnumerable<IProduct> GetProductListByName(string name);

}

Хранилище для товаров позволит найти товар по идентификатору, список товаров по наименованию и список товаров, которые доступны в данный момент.

Реализация данных

хранилищ не составляет труда (листинг 3.3).

Листинг 3.3. Реализация хранилищ

public class CustomerRepository : ICustomerRepository {

private readonly MyDatabaseDataContext _dataBase;

public CustomerRepository(MyDatabaseDataContext db)

{

if (db == null)

throw new ArgumentNullException("db");

_dataBase = db;

}

public ICustomer GetCustomerById(Guid customerId)

{

if (customerId == Guid.Empty)

throw new ArgumentException("customerId");

return _dataBase.Customers

.SingleOrDefault(x => x.customerId == customerId);

}

public IEnumerable<ICustomer> GetCustomersByProduct(Guid productId) {

if (productId == Guid.Empty)

throw new ArgumentException("customerId");

return _dataBase.Orders

.Where(x => x.productId == productId)

.Select<Order, ICustomer>(x => x.Customer).Distinct;

}

}

public class OrderRepository : IOrderRepository {

private readonly MyDatabaseDataContext _dataBase;

public OrderRepository(MyDatabaseDataContext db)

{

if (db == null)

throw new ArgumentNullException("db");

_dataBase = db;

}

public IOrder GetOrderByld(Guid orderld)

{

if (orderId == Guid.Empty)

throw new ArgumentException("orderId");

return _dataBase.Orders

.SingleOrDefault(x => x.orderId == orderId);

}

public IEnumerable<IOrder> GetCustomerOrders(Guid customerId)

{

if (customerId == Guid.Empty)

throw new ArgumentException("customerId");

return _dataBase.Orders

.Where(x => x.customerId == customerId)

.Select<Order, IOrder>(x => x);

}

}

public class ProductRepository : IProductRepository {

private readonly MyDatabaseDataContext _dataBase;

public ProductRepository(MyDatabaseDataContext db)

{

if (db == null)

throw new ArgumentNullException("db");

_dataBase = db;

}

public IProduct GetProductById(Guid productId)

{

if (productId == Guid.Empty)

throw new ArgumentException("productId");

return _dataBase.Products

Поделиться:
Популярные книги

Мы друг друга не выбирали

Кистяева Марина
1. Мы выбираем...
Любовные романы:
остросюжетные любовные романы
прочие любовные романы
современные любовные романы
5.00
рейтинг книги
Мы друг друга не выбирали

В тебе моя жизнь...

Струк Марина
Любовные романы:
исторические любовные романы
9.21
рейтинг книги
В тебе моя жизнь...

Повелитель Орлов. Дилогия (самое полное издание с концовками Том 1, Том 2)

Смолин Александр
Повелитель Орлов
Фантастика:
фэнтези
эпическая фантастика
героическая фантастика
боевая фантастика
6.80
рейтинг книги
Повелитель Орлов. Дилогия (самое полное издание с концовками Том 1, Том 2)

Неучтенный элемент. Том 11

NikL
11. Антимаг. Вне системы
Фантастика:
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 11

"Военные приключения-3. Компиляция. Книги 1-22

Карпов Владимир Васильевич
Военные приключения
Детективы:
триллеры
криминальные детективы
исторические детективы
шпионские детективы
крутой детектив
5.00
рейтинг книги
Военные приключения-3. Компиляция. Книги 1-22

Газлайтер. Том 15

Володин Григорий Григорьевич
15. История Телепата
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Газлайтер. Том 15

Ты - наша

Зайцева Мария
1. Наша
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Ты - наша

Весталка

Никонов Николай Григорьевич
Проза:
современная проза
военная проза
7.00
рейтинг книги
Весталка

Любовные прикосновения

Кингсли Джоанна
Любовные романы:
современные любовные романы
5.40
рейтинг книги
Любовные прикосновения

Кодекс Магических Зверей. Гепталогия

Сорокин Александр Сергеевич
Кодекс Магических Зверей
Фантастика:
городское фэнтези
рпг
фэнтези
попаданцы
5.00
рейтинг книги
Кодекс Магических Зверей. Гепталогия

Кентерберийские рассказы

Чосер Джеффри
Старинная литература:
европейская старинная литература
8.00
рейтинг книги
Кентерберийские рассказы

Шива и Кундалини. Все тайны индийской йоги

Смирнов Терентий Леонидович
Религия и эзотерика:
эзотерика
4.00
рейтинг книги
Шива и Кундалини. Все тайны индийской йоги

Дикарка Жасмин

Смолл Бертрис
6. Сага о Скай О`Малли
Любовные романы:
исторические любовные романы
8.90
рейтинг книги
Дикарка Жасмин

"Фантастика 2025-41". Компиляция. Книги 1-43

Парсиев Дмитрий
Фантастика 2025. Компиляция
Фантастика:
боевая фантастика
попаданцы
фэнтези
5.00
рейтинг книги
Фантастика 2025-41. Компиляция. Книги 1-43