Linq to SQL插入主键,因为tinyint设置为自动递增,会显示错误消息

Jas*_*son 6 c# linq sql-server-2008 linq-to-sql

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

这是一个答案而不是一个问题,因为我一直在堆栈上搜索这个问题,但找不到任何问题/答案可以提供帮助.

基本上,我试图插入(下面)

public void AddTask(Task task)
{
    TwoDooDataContext db = new TwoDooDataContext();
    db.Tasks.InsertOnSubmit(task);
    db.SubmitChanges();
}
Run Code Online (Sandbox Code Playgroud)

我的主键设置为Identity,但数据类型设置为TinyInt ...请参阅下面的类属性

ColumnAttribute(Storage="_ID", AutoSync=AutoSync.OnInsert, 
DbType="TinyInt NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
Run Code Online (Sandbox Code Playgroud)

这样做会导致错误消息:

服务器无法生成"tinyint"类型的主键列

所以,直到我可以链接这个链接,我才知道这个... http://connect.microsoft.com/VisualStudio/feedback/details/402060/accessing-a-primary-key-id-when-its-declared-作为一种TINYINT-使用-LINQ

这是一个已知问题,但没有修复 - 我正在使用SQL 2008 Express和VS Web Developer 2010 Express.

我的修复只是将数据类型更改为Int,一切正常.希望这有助于其他任何人寻找解决方案.

实际上是一个问题 - 在我的案例中使用什么是最好的数据类型?我应该保留它作为Int还是改变它即使它工作?谢谢

Jon*_*ell 2

数据库管理员对何时使用 TINYINT 而不是 INT进行了很好的讨论,尽管我认为它不适用于您的情况。如果使用 int 可以解决已知问题,那么您需要一个很好的理由来更改它。我会保持原样。