无法将值NULL插入列' ProductId',table' ProductDB.dbo.Brand&#39 ;;

时间:2017-10-04 19:17:39

标签: c# sql sql-server linq

我有两张桌子即。 tblProduct和Brands,tblProduct包含: ProductId,ProductName,Quantity,Price,Entry_Date。 和品牌包含:ProductId,BrandID,BrandName,BrandDescription,DietType,ProductId(来自tbProduct的FK)。

我使用LINQ并希望在点击按钮时将这些数据插入到两个表中,这里是插入方法:

protected void BtnAdd_Click(object sender, EventArgs e)
{
    tblProduct products = new tblProduct();

    using (ProductDataContext context = new ProductDataContext())
    {
        try
        {
            tblProduct prod = new tblProduct();
            {
                prod.ProductName = TxtProductName.Text;
                prod.Quantity = Int32.Parse(TxtQuantity.Text);
                prod.Price = Int32.Parse(TxtPrice.Text);
                prod.Entry_Date = DateTime.Parse(TxtDate.Text);
            };
            context.tblProducts.InsertOnSubmit(prod);
            context.SubmitChanges();

            Label2.Text = "Product Inserted";

            Brand br = new Brand();
            {
                br.BrandName = TxtBrandName.Text;
                br.BrandDescription = TxtBrandDescription.Text;
                br.DietType = TxtDietType.Text;
            };

            prod.Brands.Add(br);
            context.Brands.InsertOnSubmit(br);
            context.SubmitChanges();
            Label1.Text = "Done";
        }
        catch (Exception exe)
        {
            Label1.Text = exe.Message;
        }
    }
}

我试图在两个表上插入,但insert命令只适用于第一个表(tblProducts),但没有在Brands表中插入任何内容,我不确定看起来是什么问题在这里。 请注意,BrandID和ProductId(在两个表上)都设置为自动增量。

2 个答案:

答案 0 :(得分:1)

试试这个(注意ProductId)

swal({
    title: "¡Hecho!",
    text: "¡Has Agregado un Usuario Nuevo!",
    closeModal: false
}).then(function() {
        swal.close();
        $('#nombre').val('')
        $('#apellido').val('');
        $('#correo').val('');
        $('#password').val('');
        $('#nombre').focus();
});

答案 1 :(得分:1)

将记录插入具有外键约束的表时,记录的外键值必须连接到它引用的主键。

因此,在插入品牌记录时,您需要包含以下内容:

br.ProductID = prod.ProductId;

这将允许维护外键约束。

编辑:mike123打败了我,但你明白了。