Linq to SQL通过BLL问题更新 - 最佳实践

时间:2009-03-02 02:23:23

标签: linq-to-sql bll

设置:

我有一个包含许多字段的大表单,用于更新Product对象。因此,在ASPX页面中,用户更改需要更新的字段,然后点击提交。在后面的代码中,我做了类似的事情;

Dim p as New MyCompany.Product()
p = p.GetProductById(ProductID)

我将Linq的Product部分类扩展为SQL,将此方法(GetProductById)添加到对象

p.Name = txtName.Text
p.SKU = txtSKU.Text
p.Price = txtPrice.Text
...    
p.Update()

这是扩展Product partial类中的Update方法。我更新数据库,发送电子邮件和更新历史表,所以我希望这种方法可以做所有这些。

该项目还有50个字段,所以显然有一个收集所有50个字段的方法是荒谬的(不管怎样我都不想去那条路线,因为调试IMO比较困难)

问题:

如果我使用DataContext通过Linq获取产品到SQL,那么我再也无法更新它,因为它无法附加的错误和已经附加到另一个DataContext的实体。

问题:

所以,如果我通过BLL中的方法获取对象,在ASPX页面中更新它,然后再尝试通过BLL发送更新来更新数据库,我应该怎么做呢?

1 个答案:

答案 0 :(得分:0)

无论LINQ-to-SQL与否,这都是我的工作。提交后,我搜索该项目(如果它是使用PK的单个项目,它应该很快),我的DAL返回一个数据对象,我使用反射来映射页面中的每个元素以及数据对象中的相应属性。我的DAL仅更新已更改的项目。

我认为你必须做的是相同的,收集所有价值并提交它们。如果LinqToSql不够聪明,无法确定发生了什么变化,那么它可能不是最好的选择。