gpt4 book ai didi

c# - 将 TableAdapter 与基类、接口(interface)或部分类一起使用的更智能方法

转载 作者:行者123 更新时间:2023-12-02 15:33:13 27 4
gpt4 key购买 nike

C# ADO.Net TableAdapter 对象不实现接口(interface)或基类(组件除外)。

有人在 (GoF) 模板模式的应用程序中使用过 TableAdapter 吗?

更新:我想解决这里描述的问题:
Help to improve a migration program
通过使用模板模式(GoF),适配器模式 (GoF) 或其他不错的模式。

最佳答案

TableAdapter 没有具体的基类或接口(interface)。但 MS 的人很聪明,他们会部分离开。因此,您可以使用部分类来使用 TableAdapter。我们遇到了类似的问题,我们想要编写可以解决数据模型中所有表适配器的通用代码。我们按照以下方式进行了操作。

1.) 定义了接口(interface)ITableAdapter

public interface ITableAdapter<TDataTable> : IDisposable
where TDataTable : DataTable
{
void AttachTransaction(SqlTransaction _transaction);
SqlTransaction CreateTransaction();

int Update(TDataTable _dataTable);

TDataTable GetData();
TDataTable GetById(int Id);
}

2.) 后来我们为项目中的每个表适配器创建了部分类,并为它们实现了这个接口(interface)

public partial class UsersTableAdapter : ITableAdapter<FileParkDataSet.UsersDataTable>
{
#region ITableAdapter<UsersDataTable> Members

public void AttachTransaction(SqlTransaction _transaction)
{
if (this.Adapter == null)
this.InitAdapter();

this.Adapter.InsertCommand.Transaction = _transaction;
this.Adapter.UpdateCommand.Transaction = _transaction;
this.Adapter.DeleteCommand.Transaction = _transaction;

foreach (var _cmd in this.CommandCollection)
{
_cmd.Transaction = _transaction;
}
}

public SqlTransaction CreateTransaction()
{
if (this.Connection.State != ConnectionState.Closed)
this.Connection.Close();
this.Connection.Open();

return this.Connection.BeginTransaction();
}

#endregion
}

现在您可以针对 ITableAdapter 进行编程。

关于c# - 将 TableAdapter 与基类、接口(interface)或部分类一起使用的更智能方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1847193/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com