挿入時に外部キー制約の問題に遭遇することなく CRUD 操作をテストできるように、データベースでテスト データを生成する方法を検討してきました。
私がとることにしたアプローチは、Visual Studio 2010 Ultimate のデータ ジェネレーター機能を使用することでした。特定のデータベースのデータ ジェネレーター プランを設定することはそれほど難しくありませんでしたが、データ型の問題で足止めされています。
具体的には、データベース内の列の 1 つが Bit 型に設定されています。ただし、データ ジェネレーター プランはデータ型を int に設定しています。ここから、選択できるジェネレータ オプションは、データ バインド ジェネレータ、整数、シーケンシャル データ バインド ジェネレータ、SmallInt、および TinyInt のみです。
名前に Int が含まれるオプションを除くすべてのオプションは、ジェネレーターの実行時に出力値を生成しません。Int ジェネレーターの 1 つを使用してジェネレーターを実行し、値を生成しようとすると、次のエラーが発生します。
エラー 1 TSD50003: ジェネレーター Int は列 [dbo].[Contract_Relationship].[status] に対して有効ではありません - タイプ ビット
このエラーは、列が実際には Int ではなくビットであることを考えると明らかです。それほど明白ではないのは、列のデータ型を正しいものに変更する方法です。
[ツール] > [オプション] > [データベース] > [既定のジェネレーター] でデータ型ジェネレーターの定義を調べてみましたが、ビットは SQL データ型カテゴリのブール型に関連付けられている既定のデータ ジェネレーター カテゴリに分類されます。
ここから、デフォルト データ ジェネレーター カテゴリのドロップダウンが各 SQL データ型に関連付けられているため、ジェネレーターを変更することもできません。Data Generator プランの Bit 列のデータ型を変更しようとしても、読み取り専用であるため機能しません。
最後に、回避策として列を null に設定しますが、null に設定されていません。列のデータ型をビットに変更する方法について何か提案はありますか?
前もって感謝します!
更新: 開発チームのスキーマ ファイルをもう少し調べたところ、Create Table .sql ファイルで列が実際には Int データ型に設定されていることに気付きました。データ ジェネレーターがスキーマに使用している情報は、これらのファイルから取得されているように思えます。
create table ファイルと SQL Server クライアントの実際のデータベースの間で列が間違っているのは奇妙に思えますが、おそらく私の質問とは直接関係のないものです。
データ ジェネレーターのデータ型を変更する方法や、データ ジェネレーターがどこからスキーマ情報を取得しているかを誰かが知っていれば、私はまだ興味があります。
お時間をいただきありがとうございました。