他の 3 つのテーブルへの外部キーを持つ 1 つのテーブル Documentation があります。この表、ドキュメントには、さまざまな主題 (ガラス、航空機、およびプロジェクト) のドキュメントが含まれている必要があります。3 つのテーブル (ガラスのドキュメント用のテーブル、航空機ドキュメント用のテーブルなど) を作成したくなかったので、他のテーブル (ガラス、航空機、およびプロジェクト テーブル) への参照 (外部キー) を持つテーブルを 1 つだけ作成しました。 )。まず、これが良い解決策かどうかはわかりません...
とにかく、問題は次のとおりです。ガラスに関するドキュメントを挿入したいのです。これは、Aircraft と Project の外部キーが null になることを意味します。データベース列は null 値を受け入れます。これらの外部キー (AircraftFK および ProjectFK) に null 値を挿入しようとしても、挿入できません。テーブル Aircraft と Project の主キーとして既に存在する外部キーに適切な値を挿入するように求めています。
これらの外部キー (AircraftfK および ProjectFK) は NULL にする必要があります。これは、挿入するドキュメントが航空機およびプロジェクトとは関係がないためです。
私は C# でプログラミングしており、Sql Server 2008 を使用しています。
どうすればこれを解決できますか?
皆さん、ありがとうございました
ここにいくつかの詳細情報があります:
これは私のSQLコマンドです:
komanda = new SqlCommand("insert into Documentation (GlassFK, FaiFK, ProjectOrderFK, OrderNumberFK, DocPath, DocName, DocSize, DocType, DocumentFile) values (@GlassFK, @FaiFK, @ProjectOrderFK, @OrderNumberFK, @DocPath, @DocName, @DocSize, @DocType, @DocumentFile)", konekcija);
for (int i = 0; i < listaDokumenata.Count; i++)
{
komanda.Parameters.Clear();
komanda.Parameters.AddWithValue("@GlassFK", listaDokumenata[i].GlassFK);
komanda.Parameters.AddWithValue("@FaiFK", listaDokumenata[i].FaiFK);
komanda.Parameters.AddWithValue("@ProjectOrderFK", listaDokumenata[i].ProjectOrderFK);
komanda.Parameters.AddWithValue("@OrderNumberFK", listaDokumenata[i].OrderNumberFK);
komanda.Parameters.AddWithValue("@DocPath", listaDokumenata[i].PutanjaFajla);
komanda.Parameters.AddWithValue("@DocName", listaDokumenata[i].ImeFajla);
komanda.Parameters.AddWithValue("@DocSize", listaDokumenata[i].VelicinaFajla);
komanda.Parameters.AddWithValue("@DocType", listaDokumenata[i].Ekstenzija);
komanda.Parameters.AddWithValue("@DocumentFile", listaDokumenata[i].Fajl);
ドキュメントオブジェクトを作成するためのC#コードは次のとおりです。
Document sf = new Document();
sf.PutanjaFajla = putanjaFajla;
sf.ImeFajla = imeFajla;
sf.Ekstenzija = ekstenzija;
sf.VelicinaFajla = velicinaFajla;
sf.Fajl = wordFile;
sf.FaiFK = 5;
sf.GlassFK = 0;
sf.ProjectFK = null;
sf.ProjectOrderFK = 0;
これは、このドキュメントが Glass について言及していることを意味します。他のすべての外部キーは 0 または null でなければなりません (SQL の属性タイプによって異なります)。
だから、ここに私が得るエラーがあります:
パラメータ化されたクエリ '(@GlassFK int,@FaiFK int,@ProjectOrderFK int,@OrderNumberFK nvar' は、指定されていないパラメータ '@OrderNumberFK' を想定しています。
OrderNumberID は、テーブル Project の主キーです。その外部キーは OrderNumberFK です