【问题标题】:Exception: "Can't perform Create, Update, or Delete operations on 'Table(Property_main_image)' because it has no primary key."例外:“无法对'表(Property_main_image)'执行创建、更新或删除操作,因为它没有主键。”
【发布时间】:2014-11-20 09:30:22
【问题描述】:

我在文件夹中插入图像,并在数据库中插入它的 url,但它会引发某种异常。我正在使用 linq to sql。

在文件夹中插入图片成功,但没有在数据库中插入路径并抛出异常。

protected void Button1_Click1(object sender, EventArgs e)
    {
       using (Property_dbDataContext context = new Property_dbDataContext())
         {
            string imagename = _PictureUpload1.FileName.ToString();
            Property_main_image main = new Property_main_image();
            main.prop_id = "5";
            string imagepath_2 = "wp-content/uploads/Main_Images/" + imagename;
            main.image_url = imagepath_2.ToString();
            _PictureUpload1.SaveAs(Server.MapPath(imagepath_2));
            context.Property_main_images.InsertOnSubmit(main);
            context.SubmitChanges();
         }
    }

例外:

无法对“表(Property_main_image)”执行创建、更新或删除操作,因为它没有主键。

说明:在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取更多信息 有关错误的信息以及它在代码中的来源。

异常详细信息: System.InvalidOperationException:无法对“表(Property_main_image)”执行创建、更新或删除操作 因为它没有主键。

【问题讨论】:

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


【解决方案1】:

LINQ 不允许在没有主键的情况下向表中插入数据。要使用没有主键的表实现插入数据,您可以使用存储过程或创建查询并使用 LINQ 执行。

【讨论】:

  • 这不是我使用 linq 的第一个查询,我一直在使用 linq,但这是我第一次遇到这种异常,并且我在表中有一个主查询。 .
【解决方案2】:

LINQ 不允许在没有主键的情况下向表中插入数据。 所以首先在刷新 .dbml 文件后创建主键,这意味着删除数据类(意味着表)并再次添加。

【讨论】:

    【解决方案3】:

    也许该错误具有误导性?我对 C# 很陌生,所以它的价值。我有同样的问题和错误。即使我在将表构建为公共表时定义了 PrimaryKey,但在程序中的某个位置出现了 no primary key 错误。由于没有意义,我在调用之前再次构建了主键并运行程序并得到以下错误。

    {“这些列目前没有唯一值。”}

    至少在我的情况下这是真的。我有多行具有相同的主键值。我向主键添加了另一列以确保它是唯一的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-01
      • 2011-07-09
      • 1970-01-01
      相关资源
      最近更新 更多