服务器无法生成类型为'tinyint'的主键列...

这不是问题,而是答案,因为我一直在堆栈中搜索该问题,找不到任何可以帮助的问题。

基本上,我试图做一个插入(如下)

public void AddTask(Task task)
{
    TwoDooDataContext db = new TwoDooDataContext();
    db.Tasks.InsertOnSubmit(task);
    db.SubmitChanges();
}

我的主键设置为Identity为true,但数据类型设置为TinyInt ...请参见下面的类属性
ColumnAttribute(Storage="_ID", AutoSync=AutoSync.OnInsert,
DbType="TinyInt NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]

这样做会导致错误消息:



因此,直到我找到此链接,我才能弄清楚这一点...
http://connect.microsoft.com/VisualStudio/feedback/details/402060/accessing-a-primary-key-id-when-its-declared-as-a-tinyint-using-linq

这是一个已知问题,但未解决-我正在使用SQL 2008 Express和VS Web Developer 2010 Express。

我的解决方法是将数据类型更改为Int,然后一切正常。希望这可以帮助其他人寻找解决方案。

实际上是一个问题-在我的情况下,最佳的数据类型是什么?我应该将其保留为Int还是更改它,即使它正在运行?
谢谢

最佳答案

数据库管理员对when to use TINYINT over INT进行了很好的讨论,尽管我认为它不适用于您的情况。如果使用int使您克服了已知问题,则需要一个很好的理由进行更改。我会保留原样。

10-01 17:14
查看更多