是否可以在分部类中扩展构造函数



我使用的是MS Access数据库(我知道…(,所以为了捕获自动生成的主键,我正在扩展表适配器类。我花了一段时间才弄清楚这一部分,所以如果这是你的问题,未来的读者,右键单击你的数据集文件(*.xsd(,然后选择"查看代码"。这将创建一个分部类。GetLastID()方法只是一个具有SELECT @@IDENTITY的查询。诀窍在于,它必须在更新行时完成,而不关闭和打开新的连接,因此需要处理RowUpdated事件。这是它的代码:

namespace TimeTrack.TimeTrackDataSetTableAdapters
{
public partial class TimeSlipsTableAdapter
{
public void CustomSetup()
{
Adapter.RowUpdated += Adapter_RowUpdated;
}
private void Adapter_RowUpdated(object sender, OleDbRowUpdatedEventArgs e)
{
if (e.StatementType == StatementType.Insert && e.Errors == null)
{
int lastID = (int)GetLastID();
e.Row["ID"] = lastID;
e.Status = UpdateStatus.SkipCurrentRow;
}
}
}
}

我的问题是:有没有办法避免调用CustomSetup()方法

我希望以某种方式将事件处理程序分配包含在表适配器的构造中,而不必进行额外的调用。有办法吗?

我认为您已经得到了最佳解决方案。虽然您可以添加新的构造函数(使用不同的签名(,但在C#中,分部类无法向构造函数添加额外的步骤。做到这一点的唯一方法是使用一种方法。

最新更新