Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linq to sql LINQ InsertOnSubmit调试所需的必填字段_Linq To Sql_Stored Procedures_Strongly Typed Dataset - Fatal编程技术网

Linq to sql LINQ InsertOnSubmit调试所需的必填字段

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

我已经使用ADO.NET Strogly类型化数据集模型处理CRUD和存储过程执行大约2年了。在过去的一年里,我构建了我的第一个MVC应用程序,我真的很享受LINQ的轻松性和灵活性。对于我来说,最大的卖点可能是,使用LINQ,我不必再创建返回SCOPE_标识的“Insert”存储过程(数据集模型中自动生成的Insert语句不经过修改就无法实现这一点)

目前,我在ASP.NET3.5WebForms中使用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类设计视图中,以便刷新DataContext。听起来对吗

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

底线是,如果我使用像上面那样的insert语句,并在数据库中添加一个非空字段,它将在大约10-20个位置破坏我的应用程序,我将无法检测到它。我唯一的选择是在解决方案端搜索关键字“products.InsertOnSubmit”并确保分配了新字段吗

有更好的办法吗


谢谢

创建一个非空字段,默认值为任意值。这样,旧的行将有一个您知道的默认值,允许您返回并向表中添加值