Domanda

alt text http://img16.imageshack.us/img16/8085/datacontext .jpg

Sopra è il LINQ to SQL Progettazione viste per il mio contesto dati.

Di seguito è riportato il codice rilevante che il progettista genera:

Accessor per la classe astratta ActivityBase:

        public System.Data.Linq.Table<ActivityBase> ActivityBases
        {
            get
            {
                return this.GetTable<ActivityBase>();
            }
        }

La classe ActivityBase e l'elenco delle sottoclassi:

[Table(Name="dbo.Activities")]
[InheritanceMapping(Code="1", Type=typeof(ActivityBase), IsDefault=true)]
[InheritanceMapping(Code="2", Type=typeof(Project))]
[InheritanceMapping(Code="3", Type=typeof(ProjectActivity))]
[InheritanceMapping(Code="5", Type=typeof(Task))]
[InheritanceMapping(Code="4", Type=typeof(Activity))]
public abstract partial class ActivityBase : INotifyPropertyChanging, INotifyPropertyChanged
{

C'è un modo per generare metodi di accesso per le sottoclassi come mostrato nella mappatura eredità di cui sopra (progetto, attività, ecc ...) senza farlo manualmente? Ho aggiunte manualmente, ma poi un cambiamento nella finestra di progettazione sovrascrive i modifiche manuali.

me lo fa fare di sbagliato? non dovrei essere fare di accesso per le classi secondarie? filtraggio da ActivityBase sembra peggio per me.

Grazie per qualsiasi aiuto su questo.

È stato utile?

Soluzione

Si noti che LINQ to SQL crea classi parziali. Se si desidera modificare le classi generate automaticamente è possibile farlo dichiarando una classe parziale con lo stesso nome e aggiungendo i metodi di lì. In questo modo essi non otterrà sovrascritto quando si apporta una modifica nella finestra di progettazione.

Altri suggerimenti

Ho trovato questa domanda risponde quello che volevo sapere:

Qual è il file .cs in MyDataContext.dbml per ?

in quanto il contesto dati è anche una classe parziale che posso usare quel file.

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