[英]During Linq-to-SQL insert, when does an auto-increment primary key value become available?
[英]Linq to SQL insert with primary key as tinyint set to auto-increment gives error message
服务器无法生成'tinyint'类型的主键列...
这是一个答案而不是一个问题,因为我一直在堆栈上搜索这个问题,但找不到任何问题/答案可以提供帮助。
基本上,我试图插入(下面)
public void AddTask(Task task)
{
TwoDooDataContext db = new TwoDooDataContext();
db.Tasks.InsertOnSubmit(task);
db.SubmitChanges();
}
我的主键设置为Identity,但数据类型设置为TinyInt ...请参阅下面的类属性
ColumnAttribute(Storage="_ID", AutoSync=AutoSync.OnInsert,
DbType="TinyInt NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
这样做会导致错误消息:
服务器无法生成“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还是改变它即使它工作? 谢谢
数据库管理员很好地讨论了何时使用TINYINT over INT,尽管我不认为它适用于您的情况。 如果使用int让你超越已知问题,你需要一个很好的理由来改变它。 我会原样离开。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.