【问题标题】:Insertonsubmit method asp.netInsertonsubmit 方法 asp.net
【发布时间】:2014-05-30 10:57:19
【问题描述】:

我想在 asp.net 中使用 linq 在我的表中插入一行,但我遇到了一些麻烦。我对此进行了很多搜索,并且到处都找到了相同的解决方案:

context.entity.InsertOnSubmit(variable);

所以,我没有 InsertOnSubmit 方法,我需要做一些特殊的事情来使用它吗?我有using System.Web.Linq

为了解决这个问题,我尝试过:

context.entity.Add(variable);
context.SaveChanges();

结果是这样的错误:

“更新条目时出错。有关详细信息,请参阅内部异常。”
细节: “无效的对象名称'ConnectionStringModelStoreContainer.user'。”

你有什么建议?

【问题讨论】:

    标签: c# asp.net linq linq-to-sql linq-to-entities


    【解决方案1】:
    1. InsertOnSubmit 是一个Linq2Sql 概念,用于向数据库添加行。 SubmitChanges 用于保存更改。
    2. Entity.Add 是一个实体框架概念。使用保存更改。

    在您的情况下,您似乎正在使用Entity Framework.

    检查您的 EDMX 文件和数据库以查看任何表不匹配。

    具体来说,

    1. 转到您的连接字符串(在配置中或更好的是通过断点)
    2. 使用该确切的连接字符串登录到该 SQL Server
    3. 验证用户表是否存在。

    【讨论】:

      【解决方案2】:

      使用 Linq2SQL 时,您需要使用 context.TableName.InsertOnSubmit(value) 访问您尝试插入的表,其中 TableName 是 dbml 文件中表的名称,值是为您创建的该类的实例.调用InsertOnSubmit() 方法后,需要调用context.SubmitChanges() 方法才能真正将其保存到表中。此外,根据您创建 dbml 文件的方式,上下文中的表名可能是复数形式。例如:对于User 表,它可能看起来像context.Users.InsertOnSumbit(user);

      【讨论】:

      • 表名为user,实体为users。我做错了什么?
      • 您似乎对使用的 ORM 感到非常困惑。在您的 Visual Studio 项目中,您是否看到以 .dbml 或 .edmx 结尾的文件?这是第一步。
      • 好的,那么您应该可以访问在创建模型时设置的 DbContext。为了访问您的表并插入一个新实体,您需要执行类似的操作。 context.Set().Add(user);然后以 context.SaveChanges(); 结束
      • 我很抱歉,我觉得这太深太快了。我将很快发布一个新答案以更好地进行布局。除非别人也打败我。
      • 我喜欢这样吗? context.Set().Add(createUser); context.SaveChanges();我试过了,但同样的错误。
      【解决方案3】:

      我找到了我的问题的解决方案。

      在这篇文章中准确解释我需要做什么: 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

      【讨论】:

        猜你喜欢
        • 2011-01-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多