6

タイプ「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)]

これを行うと、次のエラー メッセージが表示されました。

タイプ 'tinyint' の主キー列をサーバーで生成できません

したがって、このリンクができるまでこれを理解できませんでした... 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のままにしておくか、変更する必要がありますか? ありがとう

4

1 に答える 1

2

データベース管理者は、INT よりも TINYINT をいつ使用するかについて良い議論をしていますが、あなたの場合には当てはまらないと思います。int を使用することで既知の問題を回避できる場合は、それを変更する十分な理由が必要です。そのままにしておきます。

于 2012-04-28T03:38:16.010 に答える