我一直在尝试在具有标识列RequestID(也是主键)的表中插入行
HelpdeskLog logEntry = new HelpdeskLog { RequestBody = message.Body };
if (attachment != null)
logEntry.Attachments = Helper.StreamToByteArray(attachment.ContentStream);
Database.HelpdeskLogs.InsertOnSubmit(logEntry);
Run Code Online (Sandbox Code Playgroud)
但是我的代码不可避免地会抛出错误
无法在Table上执行创建,更新或删除操作,因为它没有主键.
尽管确实存在主键列
这就是我试图做的事情:
然而,这两种方法都没有帮助.什么是诀窍,有人知道吗?
Ste*_*e L 32
我也在我的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; }
}
Run Code Online (Sandbox Code Playgroud)
即使您的数据库表(在本例中为MySessionEntries)已经定义了主键,也需要这样做,因为除非您使用linq2sql工具将数据库定义提取到visual studio中,否则Linq不会自动找到该事实.
小智 12
LINQ不允许在没有主键的情况下将数据插入表中.要使用没有主键的表来实现插入数据,您可以使用存储过程或创建查询并使用LINQ执行.下面的链接提供了相同的很好的解释.
无法对表(Employee)执行创建,更新或删除操作,因为它没有主键