到目前为止,我已经使用ADO.NET类型的DataSet模型处理CRUD和存储过程执行大约两年了。在过去的一年里,我构建了我的第一个MVC应用程序,我真的很喜欢LINQ的易用性和灵活性。也许对我来说最大的卖点是,使用LINQ,我不必再创建返回SCOPE_IDENTITY的" insert“存储过程( DataSet模型中自动生成的insert语句在没有修改的情况下无法做到这一点)。
目前,我在ASP.NET 3.5 WebForms上使用LINQ。我的插件如下所示:
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 Class设计视图中,以便刷新DataContext。这听起来对吗?
问题是任何非空的新字段都不会被ASP.NET构建过程捕获。例如,如果我在数据库中添加了一个非空字段"Quantity“,上面的代码仍然会构建。在DataSet模型中,存储过程方法将接受一定数量的参数,并警告我,如果不包括数量值,插入将失败。LINQ存储过程方法也是如此,然而,据我所知,LINQ没有提供自动生成insert语句的方法,这意味着我又回到了起点。
底线是,如果我使用像上面这样的insert语句,并且我在数据库中添加了一个非空字段,它将使我的应用程序在大约10-20个位置中断,并且我将没有办法检测到它。我唯一的选择是在解决方案端搜索关键字"products.InsertOnSubmit“并确保分配了新字段吗?
有没有更好的方法?
谢谢!
发布于 2010-04-14 01:40:12
创建一个非Null字段,其默认值为whatever。这样,旧的行将具有您所知道的默认值,允许您返回并向表中添加值。
https://stackoverflow.com/questions/2631352
复制相似问题