我想在asp.net中使用linq在表中插入一行,但我遇到了一些问题。我搜索了很多关于这方面的信息,在所有地方都找到了相同的解决方案:
context.entity.InsertOnSubmit(variable);
所以,我没有InsertOnSubmit方法,我需要做一些特别的事情来使用它吗?我有using System.Web.Linq
。
为了解决这个问题,我尝试了:
context.entity.Add(variable);
context.SaveChanges();
结果是一个错误:
"更新条目时出错。有关详细信息,请参阅内部异常。"
详细信息:"对象名称'ConnectionStringModelStoreContainer.user'无效。"
你有什么建议?
- InsertOnSubmit是一个
Linq2Sql
概念,用于向数据库中添加行。SubmitChanges用于保存更改 - Add是一个实体框架概念。使用保存更改
在您的情况下,看起来您使用的是Entity Framework.
请检查EDMX文件和数据库,查看是否有任何表不匹配。
具体而言,
- 转到您的连接字符串(在配置中或更好的情况下,通过断点)
- 使用该连接字符串登录到该SQL Server
- 验证用户表是否存在
使用Linq2SQL时,您需要使用context.TableName.InsertOnSubmit(value)
访问要插入的表,其中TableName是dbml文件中表的名称,值是为您创建的类的一个实例。一旦调用了InsertOnSubmit()
方法,就需要调用context.SubmitChanges()
方法来将其实际保存到表中。此外,根据创建dbml文件的方式,上下文中的表名可以是复数。例如:对于User
表,它可能看起来像context.Users.InsertOnSumbit(user);
我找到了问题的解决方案。
在这篇文章中,准确地解释了我需要做什么:http://blogs.msdn.com/b/adonet/archive/2011/01/29/using-dbcontext-in-ef-feature-ctp5-part-4-add-attach-and-entity-states.aspx?Redirected=true