アットウィキロゴ

.NET DB

 

型付DataSetをデザインするとき、AutoIncrementは使わない。(DBに実際に書き込まれる番号とことなることがあり、なんだかしっくりこないので)
 
 
と思ったが。AutoIncrementを使わないと、新しい行をDataSetに追加したときにKeyがNullになりエラーになる。
主キーなのでNull許容にはできない。よって、Null以外の値をなにかいれてやらないといけない。
それはつまり、AutoIncrementで実現できる(AutoIncrementで実現するのが一番シンプル)。
プログラム上でAutoIncrementで取得された新しいユニークナンバーは、必ずしもDBに登録したときに設定される新しいユニークナンバーと
一致するとは限らない。
ので、主キー列は非表示にするのが望ましい。
 
DataSetデザイナでは、以下のの現象が起きる(たぶんバグ。Visual Studio 2010)。
「リレーションシップのみ」のリレーションがあるとき、親カラムをAutoIncrementにしようとするとエラーになり不可。
しょうがないので、リレーションシップを解除し、子カラム親カラムともにAutoIncrementにした後で
リレーションをつなぎなおす。
その後、子をAutoIncrementでなくする。
こうすことでやっと、親だけAutoIncrementという状況ができる。
(MySqlではAutoIncrementプロパティが取り込まれないのでこういった問題が見える)
 
(2011/0312 追記)
どうも、これはAutoIncrementにするとUIntからIntになるという型付DataSetの仕様によるものでは無いかと思われる。
 

 AutoInclement

AutoIncrementとUIntの同時設定不可

.NETでは、型付DataSetをデザインするとき、AutoIncrementの列についてUnsignedを同時に設定できない(仕様らしい)。
よって、MySQLでAutoIncrementを指定する場合は、Unsignedにしないのが無難。
 

参考ページ

@@IDENTITY クライシスを管理する

http://msdn.microsoft.com/ja-jp/library/ms971502.aspx

 
 

型付DataSetで読み取り専用テーブルを作るべきか

作ると、列が増えたときなど、全部に塚するのが面倒

 

.NET DBソフト作成手順

DB設計を行う(テーブル構成をある程度確定させる)

DBに対応した型付DataSetを作成(自動作成できる)

SqlServer、Access以外(MySql等)だとここでちょっとこつがいるので大変

外部DBを持つ予定がない場合は、型付DataSetを自分で作成することになる

DB設計を変更するときは(ちょっと大変)

まず、変更対象の列やテーブルに関連づいているプログラムについて、関連付けを一旦消す(大変)

型付DataSetで変更対象の列やテーブルを消す

DB上で変更処理をする

型付DataSet上に新たに変更後の要素を作成する

変更対象の列やテーブルに関連づいているプログラムについて、関連付けをやり直す(大変)

 

最終更新:2011年07月27日 14:14