J'essaie de mettre en œuvre un système web hautement réutilisable où la source de données pour le modèle peut être modifiée à volonté. Ce dont j'ai besoin, c'est d'un type générique au lieu de me fier au type généré par LINQ ou les entités.Représentations de modèles génériques dans ASP.NET MVC
This tutorial va sur la séparation pour une haute réutilisabilité, mais que se passe-t-il si la représentation des données entre les entités et LINQ change si légèrement? Ensuite, vous devez changer la vue. Les classes générées par LINQ et les entités sont-elles garanties pour être transmises à la vue? Est-il possible de créer une classe/interface qui représente génériquement les données?
EXEMPLE
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; }
}
}
Le code ci-dessus est tirée d'un petit projet que je teste. Notez que j'ai des types qui commencent par "tbl". Je viens de les faire glisser d'une base de données sur le concepteur LINQ et je les utilise dans ce conteneur qui est passé à la vue pour rendre plus tard plusieurs ensembles de résultats à l'écran.
Le problème est que si je fossé entités LINQ et utiliser à la place, les données seront reflétées toujours de la même manière que les types représentés ici? Est-ce que Contract
sera toujours valide? Gardez à l'esprit que ces types dans l'exemple de code précédent sont générés par LINQ. Dans quelle mesure sont-ils cohérents si vous utilisez une technologie d'accès aux données différente?
C'est pourquoi je me demande si nous devrions, pour la séparation des préoccupations, et pour la cohérence des données à la place créer nos propres classes pour représenter les données de manière cohérente.
Mon cerveau fait mal, quelqu'un me sauve de moi-même.
J'utilise IMultipleResult à partir de fonctions définies dans mon fichier dbml pour renvoyer plusieurs ensembles de résultats qui ont des représentations de classe en tant que conteneur pour quand ils sont passés à la vue.Le conteneur repose sur les types générés par LINQ, ce qui signifie qu'il ne doit y avoir aucune différence entre les classes générées automatiquement pour la sortie des requêtes. Si vous regardez les classes générées par LINQ, leur 'schéma' est juste des représentations d'objets des types de données (c'est-à-dire, string, int etc.) donc je ne l'ai pas vu comme initialement difficile. – Kezzer