Kb.*_*Kb. 2 .net c# ado.net tableadapter
C#ADO.Net TableAdapter对象不实现和接口,也不是基类(除Component之外).
有人在模板中使用TableAdapter(GoF-)模式吗?
更新:我想解决此处描述的问题:
通过使用模板(GoF),适配器(GoF)或其他漂亮的模式
帮助改进迁移程序
.
TableAdapters没有具体的基类或接口.但MS家伙很聪明,可以留下部分内容.因此,您可以使用部分类来使用TableAdapter.我们遇到了类似的问题,我们想编写可以解决数据模型中所有表适配器的通用代码.我们这样做了.
1.)定义了一个接口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);
}
Run Code Online (Sandbox Code Playgroud)
2.)稍后我们为项目中的每个表适配器创建了部分类,并为它们实现了这个接口.
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
}
Run Code Online (Sandbox Code Playgroud)
现在您可以针对ITableAdapter进行编程.
| 归档时间: |
|
| 查看次数: |
3580 次 |
| 最近记录: |