为了处理CRUD和存储过程执行,我已经使用ADO.NET Strogly-Typed DataSet模型大约2年了。在过去的一年中,我构建了我的第一个MVC应用程序,我非常喜欢LINQ的轻松和灵活性。也许对我来说最大的卖点是用LINQ时,我不必创建“插入”存储过程,以便返回SCOPE_IDENTITY(DataSet模型中的自动生成的插入语句无需修改就无法进行此操作)。LINQ InsertOnSubmit调试所需的字段
目前,我使用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”,“数量”等等......我的理解是,我需要将这些字段添加到数据库表中,然后删除并重新添加表到LINQ to SQL类设计视图以刷新DataContext。这听起来是对的吗?
问题是,任何非空的新字段都不会被ASP.NET构建过程捕获。例如,如果我向数据库添加了“数量”非空字段,上面的代码仍然会生成。在DataSet模型中,存储过程方法会接受一定数量的参数,并会警告我,如果我没有包含数量值,则Insert会失败。 LINQ存储过程方法也是如此,但是据我所知,LINQ没有提供自动生成插入语句的方法,这意味着我回到了我开始的地方。
底线是如果我使用上面的插入语句,并且向数据库添加非空字段,它会在大约10-20个位置中断我的应用程序,并且将无法检测到它。我唯一的选择是对关键字“products.InsertOnSubmit”进行解决方案端搜索,并确保新字段得到分配?
有没有更好的方法?
谢谢!