服务器无法生成类型为'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使您克服了已知问题,则需要一个很好的理由进行更改。我会保留原样。