数据插入问题找不到 Id

Issue with data insert not finding an Id

在我的项目中,我有一个报价系统。这以前有效,我已经对所涉及的一些事情进行了更改。更改是在不久前进行的,我只需要做一个报价,但在 QuoteDetail table.

中插入零件时失败了

错误是找不到 Eparts_ProductMasterId. Eparts 是一个 SQL 视图,我没有将它插入其中,它是只读的。我正在从购物车中提取信息,但需要它从这个 table 中找到其他信息。据当地人说,我拥有我需要的一切,它所要做的就是将它插入 QuoteDetails table.

此外,我没有将 ProductMasterId 插入 QuoteDetails table。它在 db.SaveChanges();

上失败

在我开始 post 编写一堆代码之前,我会 post 失败的部分,如果您需要查看更多内容,我会 post 您需要的部分。我什至没有调用 ProductMasterId 并且 ProductMasterId 是 SQL 视图的一部分。

这是保存失败的部分。它通过 if 并进入 else 并且不是完整的部分。

foreach (var item in CartItems)
{
    var part = db.ExtParts.Where(a => a.Material == item.Material).FirstOrDefault();
    var type = db.Parts.Where(a => a.Material == item.Material).FirstOrDefault();

    if ((type.Class == "MACH") || (type.Class == "PRL"))
    {
        QuoteDetail qd = new QuoteDetail
                    {
                        Material = item.Material,
                        QuoteId = quote.QuoteId,
                        Quantity = item.Count,
                        UnitPrice = part.MachinedPrice,
                        IsDelete = false,
                        CreatedBy = UserData.FirstName,
                        CreatedDate = System.DateTime.Now
                    };
        db.QuoteDetail.Add(qd);
    }
    else
    {
        if (part.Complete != true)
        {
            QuoteDetail qd = new QuoteDetail
                        {
                            Material = item.Material,
                            QuoteId = quote.QuoteId,
                            Quantity = item.Count,
                            UnitPrice = part.SellingPrice,
                            IsDelete = false,
                            CreatedBy = UserData.FirstName,
                            CreatedDate = System.DateTime.Now
                        };
            db.QuoteDetail.Add(qd);
        }
        else
        {
            QuoteDetail qd = new QuoteDetail
                        {
                            Material = item.Material,
                            QuoteId = quote.QuoteId,
                            Quantity = item.Count,
                            UnitPrice = part.LastCost,
                            IsDelete = false,
                            CreatedBy = UserData.FirstName,
                            CreatedDate = System.DateTime.Now
                        };
            db.QuoteDetail.Add(qd);
        }
    }
    db.SaveChanges();
}

我在发布之前遇到过这个问题

public ExtParts EParts { get; set; }

在另一个模型中,但这解决了这个问题

public virtual ExtParts EParts { get; set; }

这在 OrderDetails 模型中,还是我遗漏了什么?

如有任何帮助,我们将不胜感激。

更新:

我再次查看了我的代码,发现我在模型中添加了 public virtual ExtParts EParts { get; set; } 并且不需要它。我已经在 ViewModel 中拥有它,因此在实际模型中不需要它。该模型用于保存记录,当它查看 SQL 视图时出现故障。不会对模型中的其他模型出错,但它们也不是 SQL 视图,它们是其他相关模型。

已移除

public virtual ExtParts EParts { get; set; }

来自模特。它已经在 ViewModel 中,因此模型本身不需要它。保存和使用模型时,我猜不允许使用 SQL 视图。您不能保存到 SQL 视图,它仅供查看。我的错误,我不确定我何时以及为何将它添加到模型中。删除它并没有破坏任何代码。