Je travaille sur un énorme projet ancien avec beaucoup de code fragile, dont certains ont été autour depuis l'ère .NET 1.0, et il a été et sera travaillé par d'autres personnes ... donc je ' J'aimerais changer le moins possible.Puis-je créer une classe personnalisée qui hérite d'un DataRow fortement typé?
J'ai un projet dans ma solution qui contient DataSet.xsd. Ce projet compile à un assembly séparé (Data.dll). Le schéma de la base de données comprend plusieurs tables disposées de manière plus ou moins hiérarchique, mais la seule façon de lier les tables est de passer par des jointures. Je peux obtenir, par exemple. DepartmentRow
et EmployeeRow
objets du code généré automatiquement. EmployeeRow
contient des informations provenant de DepartmentRow
correspondant de l'employé via une jointure.
Je crée un nouveau rapport pour voir plusieurs départements et tous leurs employés. Si j'utilise le schéma d'accès aux données existant, tout ce que je peux obtenir est une sortie semblable à une feuille de calcul où chaque employé est représenté sur une ligne, avec des informations de département répétées à plusieurs reprises dans ses colonnes appropriées. .: par exemple
Department1...Employee1...
Department1...Employee2...
Department2...Employee3...
Mais ce que le client souhaite est que chaque département rend comme un titre, une liste des employés sous chacun. E.g .:
- Department1...
Employee1...
Employee2...
+ Department2...
J'essaye de faire ceci en héritant des objets hiérarchiques des objets Row générés automatiquement. .: par exemple
public class Department : DataSet.DepartmentRow {
public List<Employee> Employees;
}
De cette façon, je pouvais imbriquer les données contenues dans le rapport à l'aide d'une collection du département des objets comme source de données, chacun mettra sa liste d'employés dans un sous-état.
Le problème est que cela me donne une erreur The type Data.DataSet.DepartmentRow has no constructors defined
. Et quand j'essaie de créer un constructeur, par exemple Je reçois une erreur 'Data.DataSet.DepartmentRow(System.Data.DataRowBuilder)' is inaccessible due to its protection level.
en plus de la première.
Existe-t-il un moyen d'accomplir ce que j'essaie de faire? Ou y a-t-il autre chose que je devrais essayer entièrement?
Je ressens votre douleur ... – SLaks