Linq to sql LINQ InsertOnSubmit调试所需的必填字段
我已经使用ADO.NET Strogly类型化数据集模型处理CRUD和存储过程执行大约2年了。在过去的一年里,我构建了我的第一个MVC应用程序,我真的很享受LINQ的轻松性和灵活性。对于我来说,最大的卖点可能是,使用LINQ,我不必再创建返回SCOPE_标识的“Insert”存储过程(数据集模型中自动生成的Insert语句不经过修改就无法实现这一点) 目前,我在ASP.NET3.5WebForms中使用LINQ。我的插入内容如下所示:Linq to sql LINQ InsertOnSubmit调试所需的必填字段,linq-to-sql,stored-procedures,strongly-typed-dataset,Linq To Sql,Stored Procedures,Strongly Typed Dataset,我已经使用ADO.NET Strogly类型化数据集模型处理CRUD和存储过程执行大约2年了。在过去的一年里,我构建了我的第一个MVC应用程序,我真的很享受LINQ的轻松性和灵活性。对于我来说,最大的卖点可能是,使用LINQ,我不必再创建返回SCOPE_标识的“Insert”存储过程(数据集模型中自动生成的Insert语句不经过修改就无法实现这一点) 目前,我在ASP.NET3.5WebForms中使用LINQ。我的插入内容如下所示: ProductsDataContext dc = new P
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生成过程不会捕获任何非空的新字段。例如,如果我在数据库中添加了一个非空的“Quantity”字段,上面的代码仍然会生成。在数据集模型中,存储过程方法将接受一定数量的参数,并警告我,如果不包含数量值,则插入将失败。LINQ存储过程方法也是如此,但是据我所知,LINQ没有提供自动生成insert语句的方法,这意味着我回到了开始的地方
底线是,如果我使用像上面那样的insert语句,并在数据库中添加一个非空字段,它将在大约10-20个位置破坏我的应用程序,我将无法检测到它。我唯一的选择是在解决方案端搜索关键字“products.InsertOnSubmit”并确保分配了新字段吗
有更好的办法吗
谢谢 创建一个非空字段,默认值为任意值。这样,旧的行将有一个您知道的默认值,允许您返回并向表中添加值