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