如何通过实现可扩展性方法定义来使用LINQ to SQL和DevExpress网格



. NET MVC,我已经使用设计器创建了一个Product类,并将其显示在DevExpress网格中。

在网格中保存更改时,使用以下方法:

    [HttpPost]
    public ActionResult ProductGridPartialUpdate([ModelBinder(typeof(DevExpressEditorsBinder))] Product prod)
    {
        var EditProd = db.Products.Single(p => p.Id == prod.Id);
        if (EditProd != null)
        {
            EditProd.ProductCode = prod.ProductCode;
            EditProd.ProductTitle = prod.ProductTitle;
            EditProd.BinNo = prod.BinNo;
            db.SubmitChanges();
        }
        var q = from p in db.Products select p;
        return PartialView("ProductGridPartial", q);
    }

但是从我一直在阅读的内容来看,我认为它更像下面这样工作:

    [HttpPost]
    public ActionResult ProductGridPartialUpdate([ModelBinder(typeof(DevExpressEditorsBinder))] Product prod)
    {
        db.UpdateProduct(prod);
        var q = from p in db.Products select p;
        return PartialView("ProductGridPartial", q);
    }

或:

    [HttpPost]
    public ActionResult ProductGridPartialUpdate([ModelBinder(typeof(DevExpressEditorsBinder))] Product prod)
    {
        db.SubmitChanges();
        var q = from p in db.Products select p;
        return PartialView("ProductGridPartial", q);
    }

我的方法是"正确"的方法,还是有一些传统的方法使这两个例子工作?我在自动生成的设计器文件中看到,它有以下代码块:

#region Extensibility Method Definitions
partial void OnCreated();
partial void InsertProduct(Product instance);
partial void UpdateProduct(Product instance);
partial void DeleteProduct(Product instance);
#endregion

但是当我不确定局部UpdateProduct方法内部需要什么,并且当我在新文件中添加以下代码时,然后称为db.UpdateProduct(prod),我得到错误:"由于其保护级别而无法访问"。我尝试的代码是:

namespace TradeMeStore.Models
{
    partial class TradeMeStoreDataContext
    {
        partial void UpdateProduct(Product instance)
        {
            ExecuteDynamicUpdate(instance);
        }
    }
}

第一种方法更可取。这是CRUD操作的常见逻辑:

http://weblogs.asp.net/scottgu/archive/2007/05/19/using linq到sql - - 1.部分aspx

  • 检索编辑过的DataItem;

  • 编辑DataItem属性;

  • 提交更改。

如果您希望实现自定义CRUD功能,您应该自己考虑数据完整性。

由于其保护级别

而不可访问

将" TradeMeStoreDataContext "类和" UpdateProduct "方法都标记为public

最新更新