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

时间:2014-11-20 09:30:22

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

我在数据库中插入一个图像,并在数据库中插入其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();
         }
    }

例外:

  

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

     

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

     

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

错误可能是误导性的?我对C#很陌生,所以它值得。我有同样的问题和错误。即使我在将表构建为public时定义了PrimaryKey,但我在程序中的某个点获得了无主键错误。因为它没有意义我在进行调用之前再次构建了主键并运行程序并得到以下错误。

{"这些列目前没有独特的价值。"}

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