'在 Where 方法调用上无效的列名称 'OrdProdOrderId'

'Invalid column name 'OrdProdOrderId' on Where method call

我有一个订单模型,它有一个产品列表作为属性,我想显示带有产品的订单,但是当我尝试 select 来自数据库的项目时,这个异常弹出
Microsoft.Data.SqlClient.SqlException: '无效的列名 'OrdProdOrderId'。 列名无效 'OrdProdProductId'.'

这是我的订单型号

    public class Order
    {
        public int id { get; set; }

        public int id_agent { get; set; }

        [Required]
        [RegularExpression("[a-zA-Z\s]{5,}")]
        public string destinator { get; set; }

        [DataType(DataType.Date), Required]
        public DateTime deliver_date { get; set; }

        [Required]
        [RegularExpression("[0-9.]+")]
        public float cost { get; set; }

        [NotMapped]
        public List<Product> products { get; set; }
        [NotMapped]
        public List<bool> selected { get; set; }
    }
}

用于保存产品的OrdProd模型在每个订单中

 public class OrdProd
    {
        public int OrderId { get; set; }
        public int ProductId { get; set; }
        public Order order { get; set; }
        public List<Product> products { get; set; }
    }

这是有问题的动作

        public IActionResult Index()
        {
            var orders = _context.Orders;
            var ord_prod_db = _context.OrdProd.ToList();
            List<OrdProd> items = new List<OrdProd>();

            if(orders == null || ord_prod_db == null)
            {
                return View();
            }

            List<int> uniqe = new List<int>();

            var list = orders.ToList();

            foreach(var item in list)
            {

                if (!uniqe.Contains(item.id))
                {
                    uniqe.Add(item.id);
                }
            }

            foreach(int id in uniqe)
            {
                OrdProd ord_prod = new OrdProd();
                List<OrdProd> ord_pord_from_db = new List<OrdProd>();
                List<Product> products_to_add = new List<Product>();
                                                                                          
                ord_pord_from_db = _context.OrdProd.Where(e => e.OrderId == id).ToList(); 
                                                                                          
                foreach(var item in ord_pord_from_db)
                {
                    int i = item.ProductId; // this works fine, its returns 1 witch is the ID for the first product in the order
                         
                             -----error----
                    var aux = _context.Products.Where(e => e.id == item.ProductId).FirstOrDefault();                                                                 -                            ----error----

                    products_to_add.Add(_context.Products.Where(e => e.id == item.ProductId).FirstOrDefault());
                }

                ord_prod.OrderId = id;
                ord_prod.products = products_to_add;
                ord_prod.order = _context.Orders.Where(e => e.id == id).FirstOrDefault();
                items.Add(ord_prod);
            }


            return View(items);
        }
    }

为了生产,我的密钥由 OrderId 和 ProductId 合成

我认为这是因为您有奇怪的 OrdProd class。应该是

public class OrdProd
    {
        public int OrderId { get; set; }
        public int ProductId { get; set; }
        public Order order { get; set; }
        public Product product { get; set; }
    }

为什么你不试试这个代码

var productId = item.ProductId; // this works fine, its returns 1 witch is the ID for the first product in the order
  
 var aux = _context.Products.Where(e => e.id == productId).FirstOrDefault(); 
 products_to_add.Add(aux);