Domanda

Sono nuovo di Linq a SQL, quello che vorrei ottenere è creare una sola proprietà di sola lettura sulla classe Entity che è una combinazione di più campi, in particolare voglio creare un campo nome che combina- titolo , nome e cognome.

Posso vedere come farlo cambiando il file .designer.cs ma so che non dovrei toccarlo.

Sto tentando di farlo in modo che nei dati dinamici ottenga una singola colonna anziché più colonne.

È stato utile?

Soluzione

Il trucco qui è usare una classe parziale ; crea un nuovo file .cs e nello stesso spazio dei nomi aggiungi una nuova classe chiamata per il tuo tipo:

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

Questo combina con il file di classe originale (generato). Questo è un approccio comune per l'aggiunta di funzionalità aggiuntive nelle entità generate (incluso il contesto dei dati). Potresti anche voler esaminare i "metodi parziali", poiché un certo numero di metodi parziali sono definiti e utilizzati da LINQ-to-SQL.

Un avvertimento: se il tuo dbml è chiamato MySystem.dbml , allora evita di creare un file MySystem.cs (presumibilmente per le tue classi parziali ); c'è un bug nel generatore di codice che può causare questo errore. Basta nominarlo qualcos'altro.

Altri suggerimenti

nella tua dichiarazione LINQ select, perché non usi qualcosa del tipo:

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

Non sono sicuro che la sintassi sia presente al 100% ma controlla l'idea.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top