0

设置:

我有一个包含许多字段的大型表单,这些字段被收集以更新 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()

这是扩展产品部分类中的更新方法。我更新数据库、发送电子邮件和更新历史表,所以我希望这种方法能够完成所有这些事情。

该项目还有 50 个字段,因此显然拥有一个收集所有 50 个字段的方法是荒谬的(而且我不想走那条路,因为调试 IMO 更难)

问题:

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

问题:

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

4

1 回答 1

0

不管 LINQ-to-SQL 与否,这就是我所做的。提交后,我搜索项目(如果是使用PK的单个项目应该很快),我的DAL返回一个数据对象,我使用反射将页面中的每个元素映射到数据对象中的相应属性。我的 DAL 仅更新更改的项目。

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

于 2009-03-02T02:42:24.967 回答