我正在学习Linq-to-SQL。我想添加一条记录,但在InsertOnSubmit()
上获得例外:
无法执行创建,更新或删除操作 'Table(GuestbookEntry)'因为它没有主键。
但是我的数据库确实有一个主键。
这是我的代码:
[Table(Name = "GuestbookEntry")]
public class GuestbookEntry
{
[Column(DbType = "int not null, IsPrimaryKey=true, IsDBGenerated=true")]
public int Id { get; set; }
[Column]
public string Name { get; set; }
[Column]
public string Message { get; set; }
[Column]
public DateTime DateAdded { get; set; }
}
public class GuestbookContext : DataContext
{
public Table<GuestbookEntry> GuestBookEntries;
//public Table<Order> Orders;
public GuestbookContext(string connection) : base(connection) { }
}
...
private GuestbookContext dbGuestbook = new GuestbookContext("GuestBookConnection");
...
dbGuestbook.GuestBookEntries.InsertOnSubmit(entry);
dbGuestbook.SubmitChanges();
你能告诉我有什么问题吗?
感谢。
答案 0 :(得分:0)
您似乎需要为表格定义主键
答案 1 :(得分:0)
当我学习LINQ-to-SQL时,我最简单的方法是独占使用LINQ-to-SQL设计器,而不是尝试手动编写数据模型。这样,我只需要确保数据库模式的设置完全符合我的要求。一旦我这样做,只需遵循以下步骤:
然后,在您的代码中,执行INSERT:
using (GuestBookContext dc = new GuestBookContext())
{
GuestBookEntry entry = new GuestBookEntry();
...
(populate required fields, BUT DON'T TOUCH THE PRIMARY KEY FIELD)
...
dc.GuestBookEntries.InsertOnSubmit(entry);
dc.GuestBookEntries.SubmitChanges();
}