Я пытаюсь внедрить сильно повторно используемую веб-систему, где источник данных для модели можно изменить по своему желанию. Мне нужен общий тип вместо того, чтобы полагаться на тип, сгенерированный LINQ или объектами.Общие представления модели в ASP.NET MVC
This tutorial переводит выделение для высокого повторного использования, но что происходит, если представление данных между объектами и LINQ изменяется настолько незначительно? Тогда вам придется изменить представление. Являются ли классы, созданные LINQ и сущностями, гарантированно одинаковыми, когда они передаются в представление? Можно ли создать класс/интерфейс, который в общем случае представляет данные?
Пример
namespace Intranet.Areas.Accounts.ViewModels
{
using Intranet.Areas.Accounts;
using System.Collections.Generic;
using Intranet.Areas.Accounts.Models;
public class ContractsControlViewData
{
public IEnumerable<Contract> Contracts { get; set; }
public IEnumerable<tblCC_Contract_CC> tblCC_Contract_CCs { get; set; }
public IEnumerable<tblCC_Contract_Data_Terminal> tblCC_Contract_Data_Terminals { get; set; }
public IEnumerable<tblCC_CDT_Data_Service> tblCC_CDT_Data_Services { get; set; }
public IEnumerable<tblCC_Data_Service> tblCC_Data_Services { get; set; }
}
}
Приведенный выше код взят из небольшого проекта я тестирование. Обратите внимание, что у меня есть типы, начинающиеся с «tbl». Я просто перетащил их из базы данных в конструктор LINQ, и я использую их в этом контейнере, который передается в представление, чтобы впоследствии отображать несколько наборов результатов на экране.
Проблема заключается в том, что если я откажу LINQ и использую объекты, будут ли данные по-прежнему отражаться так же, как представленные здесь типы? Будет ли еще Contract
? Имейте в виду, что эти типы в предыдущем примере кода генерируются LINQ. Насколько они совместимы, если вы используете другую технологию доступа к данным?
Вот почему я задаюсь вопросом, должны ли мы для разделения проблем и для согласованности данных создавать собственные классы для последовательного представления данных.
Мой мозг болит, кто-то спасает меня от себя.
Я использую IMultipleResult из функций, определенных в моем файле dbml, чтобы возвращать несколько наборов результатов, которые имеют представления классов в качестве контейнера, когда они передаются в представление.Контейнер полагается на типы, генерируемые LINQ, хотя это означает, что должна быть нулевая разница между автоматически сгенерированными классами для вывода запросов. Если вы посмотрите на классы, созданные LINQ, их «схема» - это просто представление объектов типов данных (т. Е. Строка, int и т. Д.), Поэтому я не считал это изначально трудным. – Kezzer