How do you use the LINQ to SQL designer to generate accessor methods for subclasses?
-
23-09-2019 - |
Question
alt text http://img16.imageshack.us/img16/8085/datacontext.jpg
Above is the LINQ to SQL designer view for my data context.
Below is the relevant code that the designer generates:
Accessor for the abstract ActivityBase class:
public System.Data.Linq.Table<ActivityBase> ActivityBases
{
get
{
return this.GetTable<ActivityBase>();
}
}
The ActivityBase class and the list of subclasses:
[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
{
Is there a way to generate accessor methods for the subclasses as shown in the inheritance mapping above (Project, Task, etc...) without doing it manually? I added them manually but then a change in the designer overwrites any manual changes.
Am i doing this wrong? should I not be making accessors for the sub classes? filtering from ActivityBase seems worse to me.
Thanks for any help on this.
Solution
Notice that LINQ to SQL creates partial classes. If you want to modify the automatically generated classes you can do so by declaring a partial class with the same name and adding the methods there. This way they won't get overwritten when you make a change in the designer.
OTHER TIPS
I found this question answers what I wanted to know:
What is the .cs file under MyDataContext.dbml for?
since the data context is also a partial class I can use that file.