Шаблон репозитория ядра MVC для таблиц множественного поиска - PullRequest
0 голосов
/ 21 мая 2018

У нас есть транзакционная таблица Customer с несколькими таблицами поиска с внешними ключами.Мы хотим создать выпадающие меню, используя эти таблицы поиска, когда CustomerService создает транзакцию заказа клиента.Если человек просматривает транзакции позже, он увидит 4 таблицы, объединенные вместе.

Могу ли я создать,

(a) 4 интерфейса с 4 хранилищами,

(b) или 2 интерфейса (1 для транзакции клиента, 1 интерфейс для справочных таблиц)с 1 репозиторием для транзакции клиента и 3 репозиториями для интерфейса справочной таблицы?

Мы хотим перевести репозиторий таблицы поиска в список выбора ниже.Каждый список выбора выбирает определенные столбцы.Хотите быть эффективным в коде.

Модели:

public class CustomerTransaction
{
    public int CustomerTransactionId{ get; set; },
    public int ProductTypeId {get; set; }, //joins to ProductTypeTable
    public int StatusKey {get; set; },  //joins to StatusTypeTable
    public int CustomerTypeId {get; set; } //joins to CustomerTypeTable
    public string DateOfPurchase{ get; set; },
    public string PurchaseAmount { get; set; },
}

public class ProductType
{
    public int ProductTypeId{ get; set; }
    public int Size { get; set; }
    public int Weight { get; set; },
    public string ProductName { get; set; },
    public string ProductDescription { get; set; },
}

public class StatusType
{
    public int StatusKey{ get; set; }
    public string Description{ get; set; },
    public string Symbol { get; set; },
}

public class CustomerType
{
    public int KeyNumber{ get; set; },
    public int Height{ get; set; }
    public string HairColor{ get; set; },
    public string NameOfPerson{ get; set; },
    public string ResearchNotes{ get; set; },
}

Обязательные поля в раскрывающемся списке

ViewData["ProductTypeId"] = new SelectList(_context.ProductType, "ProductName", "ProductDescription");

ViewData["KeyNumber"] = new SelectList(_context.CustomerType , "NameofPerson", "Description");

ViewData["StatusKey"] = new SelectList(_context.StatusType, "Symbol", "ResearchNotes");

1 Ответ

0 голосов
/ 24 мая 2018

Вы можете создать объект передачи данных (DTO), который обеспечивает все, что нужно вашему внешнему интерфейсу.

public class EditTransaction {
    CustomerTransaction customerTransaction { get; set; }
    SelectList productTypes { get; set; }
    SelectList statusType { get; set; }
    SelectList customerTypes { get; set; }
}

Включите класс / метод / контроллер / все, что обращается к вашим репозиториям DAL и собирает DTO.Ваш клиентский код забирает DTO.Ничего «особенного» в репозиториях и интерфейсе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...