'在 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);
我有一个订单模型,它有一个产品列表作为属性,我想显示带有产品的订单,但是当我尝试 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);