我目前有一个类似于下面的类(省略了错误检查)
目前这是将数据库包装成更易于使用的对象的方式。
我想知道如果我应该一次创建表适配器然后重新使用它们,而不是为每个订单创建一个新的表适配器,我是否要加载 50,000 个订单?
我没有看到任何真正的速度问题这样做。但是最好不要每次都创建新的表适配器吗?
如果是这样,是否有一个预先存在的模式来处理这个问题?
class Order
{
public int Id {get; private set;}
public string CustomerEmail { get; set; }
public SaleLocaion SalePoint { get; set; }
public Order(int orderId)
{
using (var ta = new OrdersTableAdapter())
{
using (var res = ta.GetDataById(orderId))
{
if (res.Count == 1)
{
var row = res.First();
Id = row.Id;
CustomerEmail = row.Email;
SalePoint = new SaleLocaion(row.SaleLocationId);
}
}
}
}
}
class SaleLocaion
{
public int Id {get; private set;}
public string Name { get; private set; }
public SaleLocaion(int locationId)
{
using (var ta = new SaleLocationAdapter())
{
using (var res = ta.GetDataById(locationId))
{
if (res.Count == 1)
{
var row = res.First();
Id = row.Id;
Name = row.Name;
}
}
}
}
}
最佳答案
重用与否并不重要。它们实现了 IDisposable
,但只是因为它们继承自 Component
,后者由于 DataSet 的拖放功能而实现了 IDisposable
。但是,由于 DataSet
和 DataTable
实现 IDisposable
但 don't really need to be disposed 的原因相同,没有必要处理它们。 .
构造函数或字段初始化也非常便宜,因为所有字段都是 null
并且构造函数仅包含:
public OrdersTableAdapter() { // an examplary auto-generated table-adapter constructor
this.ClearBeforeFill = true;
}
因此,请选择最易读且最安全的方法。
关于c# - 我应该重用表适配器实例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26762300/