设置:
我有一个包含许多字段的大表单,用于更新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发送更新来更新数据库,我应该怎么做呢?
答案 0 :(得分:0)
无论LINQ-to-SQL与否,这都是我的工作。提交后,我搜索该项目(如果它是使用PK的单个项目,它应该很快),我的DAL返回一个数据对象,我使用反射来映射页面中的每个元素以及数据对象中的相应属性。我的DAL仅更新已更改的项目。
我认为你必须做的是相同的,收集所有价值并提交它们。如果LinqToSql不够聪明,无法确定发生了什么变化,那么它可能不是最好的选择。