2010-03-29 64 views
0

alt text http://img16.imageshack.us/img16/8085/datacontext.jpg如何使用LINQ to SQL设计器为子类生成访问器方法?

上面是我的数据上下文的LINQ to SQL设计器视图。

下面是设计器生成的相关代码:

访问器的抽象ACTIVITYBASE类:

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

的ACTIVITYBASE类和子类的列表:

[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 
{ 

有一种为子类生成访问器方法的方法,如上面的继承映射(Project,Task等)所示,而不需要手动执行它?我手动添加了它们,但随后设计师的更改会覆盖所有手动更改。

我做错了吗?我不应该为子类访问吗?从ActivityBase过滤似乎更糟糕。

感谢您的任何帮助。

回答

2

请注意,LINQ to SQL创建部分类。如果要修改自动生成的类,可以通过声明具有相同名称的部分类并在其中添加方法来完成。这样,当您在设计师中进行更改时,他们不会被覆盖。

+0

我已经创建了我自己的部分类,但我也使用了“db = new TaskManagerDataContext()”的存储库类,但我不能使用db.Projects,因为唯一的存取器是ActivityBase的Projects父类。我希望我不需要过滤从db.ActivityBase我的结果。希望这是有道理的,有没有办法通过修改我的部分类来做到这一点? – Pricey 2010-03-29 23:54:45

+0

访问器是我的数据上下文类的一部分,我刚刚意识到我需要检查它是否也是部分的(如果是这样),如果可以的话,我可以在设计器CS文件之外定义更多的访问器方法。 – Pricey 2010-03-30 09:13:31