和描述的一样?不,这不对。
您可以通过使用部分类添加额外的功能来解决问题。部分类放在一个单独的文件中,因此当您在设计器中删除并重新创建类时,您的代码会保留下来,并且就像魔术一样被附加。
所以,如果你有一个模型:
MyDataClasses.dbml
这又具有文件:
MyDataClasses.dbml.layout
MyDataClasses.designer.cs
添加以下文件(如果您对 .dbml 文件执行“查看代码”,Visual Studio 将为您执行此操作):
MyDataClasses.cs
在此您可以扩展 DataContext 以在修改数据时添加行为:
partial void InsertBooking(Booking instance)
{
instance.LastModified = DateTime.Now;
if (this.AuditUserID.HasValue)
{
instance.LastModifiedByID = this.AuditUserID;
}
this.ExecuteDynamicInsert(instance);
}
partial void UpdateBooking(Booking instance)
{
instance.LastModified = DateTime.Now;
if (this.AuditUserID.HasValue)
{
instance.LastModifiedByID = this.AuditUserID;
}
this.ExecuteDynamicUpdate(instance);
}
以及用于添加行为、计算字段等的单个类。如果您采用 ASP.NET 动态数据之类的东西,您还可以在其中为元数据添加注释和类,这可能会变得非常复杂。