【问题标题】:LINQ InsertOnSubmit Required Fields needed for debuggingLINQ InsertOnSubmit 调试所需的必填字段
【发布时间】:2010-04-13 16:36:21
【问题描述】:

我已经使用 ADO.NET Strogly-Typed DataSet 模型大约 2 年了,用于处理 CRUD 和存储过程执行。去年我构建了我的第一个 MVC 应用程序,我真的很喜欢 LINQ 的易用性和灵活性。也许对我来说最大的卖点是使用 LINQ,我不必再创建将返回 SCOPE_IDENTITY 的“插入”存储过程(DataSet 模型中自动生成的插入语句在不修改的情况下无法做到这一点)。

目前,我将 LINQ 与 ASP.NET 3.5 WebForms 一起使用。我的插入看起来像这样:

ProductsDataContext dc = new ProductsDataContext();
product p = new product 
{
        Title = "New Product",
        Price = 59.99,
        Archived = false
};

dc.products.InsertOnSubmit(p);
dc.SubmitChanges();

int productId = p.Id;

所以,这个产品示例非常基础,对,在未来,我可能会在数据库中添加更多字段,例如“InStock”、“Quantity”等......按照我的理解,我需要将这些字段添加到数据库表中,然后删除这些表并将其重新添加到 LINQ to SQL 类设计视图以刷新 DataContext。听起来对吗?

问题是任何非空的新字段都不会被 ASP.NET 构建过程捕获。例如,如果我在数据库中添加了一个“数量”的非空字段,上面的代码仍然会构建。在 DataSet 模型中,存储过程方法将接受一定数量的参数,并警告我如果不包含数量值,我的 Insert 将失败。 LINQ 存储过程方法也是如此,但是,据我所知,LINQ 不提供自动生成插入语句的方法,这意味着我又回到了开始的地方。

最重要的是,如果我使用上述插入语句并向我的数据库添加一个非空字段,它会在大约 10-20 处破坏我的应用程序,并且我无法检测到它.我唯一的选择是对关键字“products.InsertOnSubmit”进行解决方案端搜索并确保分配了新字段吗?

有没有更好的办法?

谢谢!

【问题讨论】:

    标签: linq-to-sql stored-procedures strongly-typed-dataset


    【解决方案1】:

    创建一个 NON-Null 字段,默认值为任何值。这样,旧行将有一个您知道的默认值,让您返回并向表中添加值。

    【讨论】:

      猜你喜欢
      • 2011-01-27
      • 1970-01-01
      • 1970-01-01
      • 2018-11-21
      • 1970-01-01
      • 1970-01-01
      • 2013-11-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多