Question

Je suis nouveau dans Linq to Sql. Ce que je voudrais réaliser est de créer une seule propriété en lecture seule sur la classe Entity qui est une combinaison de plusieurs champs. Plus précisément, je souhaite créer un champ de nom qui combine titre , prénom et nom de famille.

Je peux voir comment faire en modifiant le fichier .designer.cs mais je sais que je ne suis pas censé y toucher.

J'essaie de le faire pour que, dans les données dynamiques, j'obtienne une seule colonne plutôt que plusieurs colonnes.

Était-ce utile?

La solution

Le truc ici consiste à utiliser une classe partielle ; créez un nouveau fichier .cs et dans le même espace de nom ajoutez une nouvelle classe nommée pour votre type:

namespace My.Data.Namespace {
    partial class Employee {
        public string Foo {
            get {return Forename + " " + Surname; } // etc
        }
    }
}

Ceci est associé à le fichier de classe d'origine (généré). Il s'agit d'une approche courante pour ajouter des fonctionnalités supplémentaires dans les entités générées (y compris le contexte de données). Vous pouvez également consulter les "méthodes partielles", car un certain nombre de méthodes partielles sont définies et utilisées par LINQ-to-SQL.

Une mise en garde: si votre dbml s'appelle MySystem.dbml , alors évitez de créer un fichier MySystem.cs (probablement pour vos classes partielles). ) il y a un bogue dans le générateur de code qui peut entraîner l'échec. Nommez simplement autre chose.

Autres conseils

dans votre instruction de sélection LINQ, pourquoi n'utilisez-vous pas quelque chose comme:

select new {FullName = x.FirstName + " " + x.Surname};

Vous ne savez pas si la syntaxe est 100%, mais vérifiez l'idée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top