C#如何将外键的空值插入SQL

时间:2012-11-06 09:33:01

标签: sql-server-2008 c#-4.0

我有一个表文档,其中有3个其他表的外键。该表文档应包含不同主题(玻璃,飞机和项目)的文档。我不想创建3个表(玻璃文档表,飞机文档的另一个表等)所以我创建了一个表,它将有一个参考(外键)到其他表(玻璃,飞机和项目表) )。首先,我不确定这是否是一个很好的解决方案...

无论如何,问题如下:我想插入涉及玻璃的文件。这意味着Aircraft和Project的外键将为null。数据库列接受空值。 如果我尝试为这些外键(AircraftFK和ProjectFK)插入空值,则不允许我这样做。它要求我为tabel Aircraft and Project中已存在的主键插入适当的外键值。

这些外键(AircraftfK和ProjectFK)必须为空,因为我插入的文件与飞机和项目无关。

我正在用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

0 个答案:

没有答案
相关问题