Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/144.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 Can';无法对表执行创建、更新或删除操作,因为它没有主键_Linq_Insert_Identity - Fatal编程技术网

Linq Can';无法对表执行创建、更新或删除操作,因为它没有主键

Linq Can';无法对表执行创建、更新或删除操作,因为它没有主键,linq,insert,identity,Linq,Insert,Identity,我一直在尝试在表中插入具有标识列RequestID(也是主键)的行 但我的代码不可避免地抛出以下错误 无法对表执行创建、更新或删除操作,因为它没有主键 尽管主键列确实存在 这就是我试图做的: 在调试器中查找要插入到对象模型中的标识列的值。是0 若要手动(使用SQL)将假值插入表中,工作正常,标识值按预期生成 确保SQLMetal是否正确生成了表映射。一切正常,主键属性生成正确 然而,这两种方法都无济于事。诀窍是什么,有人知道吗?由于表在SQL Server中具有主键,请在linq2sql设计器中

我一直在尝试在表中插入具有标识列RequestID(也是主键)的行

但我的代码不可避免地抛出以下错误

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

尽管主键列确实存在

这就是我试图做的:

  • 在调试器中查找要插入到对象模型中的标识列的值。是0
  • 若要手动(使用SQL)将假值插入表中,工作正常,标识值按预期生成
  • 确保SQLMetal是否正确生成了表映射。一切正常,主键属性生成正确

  • 然而,这两种方法都无济于事。诀窍是什么,有人知道吗?

    由于表在SQL Server中具有主键,请在linq2sql设计器中重新添加表


    如果不是这样,您可以在设计器上手动配置哪些属性是主键的一部分。

    删除表,然后重新插入。在执行此操作之前,必须确保字段旁边有一个小键。重新编译你的项目,一切都会好起来


    仅仅因为您更新了dabase并不意味着DBML文件会以某种方式自动更新。对不起,没有

    我的C#代码中也出现了这个问题,我意识到我忘记了IsPrimaryKey的名称:

      [Table (Name = "MySessionEntries" )]
      public class SessionEntry
      {
         [Column(IsPrimaryKey=true)]  // <---- like this
         public Guid SessionId { get; set; }
         [Column]
         public Guid UserId { get; set; }
         [Column]
         public DateTime Created { get; set; }
         [Column]
         public DateTime LastAccess { get; set; }
      }
    
    [表(Name=“MySessionEntries”)]
    公共类会话尝试
    {
    
    [Column(IsPrimaryKey=true)]//LINQ不允许在没有主键的表中插入数据。要实现在没有主键的表中插入数据,您可以使用存储过程或创建查询并使用LINQ执行。下面的链接对此做了很好的解释


    谢谢!我的代码看起来有点不同,但主体是相同的
    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage=“\u ID”,DbType=“UniqueIdentifier NOT NULL”,IsPrimaryKey=true)]
    成功了。
      [Table (Name = "MySessionEntries" )]
      public class SessionEntry
      {
         [Column(IsPrimaryKey=true)]  // <---- like this
         public Guid SessionId { get; set; }
         [Column]
         public Guid UserId { get; set; }
         [Column]
         public DateTime Created { get; set; }
         [Column]
         public DateTime LastAccess { get; set; }
      }