gpt4 book ai didi

c# - MVC 绑定(bind)产品到订单

转载 作者:太空宇宙 更新时间:2023-11-03 15:20:27 25 4
gpt4 key购买 nike

我在理解 mvc 中的绑定(bind)过程时遇到了问题。所以我得到的是 3 个数据库表:Orders、Products、PreOrders。我想为多个订单绑定(bind)同一个产品。现在我在 Order 模型中有这样的东西(我将把 Products 保存为集合):

public virtual ICollection<Products> Product { get; set; }

节省的是这样的:

List<Products> productList = new List<Products>();
foreach (int list in preOrderList)
{
var order = new Orders()
{
//Product = (from item in )
};

var orderResult = _context.PreOrder.Single(o => o.Id == list);
orderResult.Send = true;

var productResult = _context.Products.Single(p => p.Id == orderResult.ProductId);
var newProduct = new Products();
newProduct.Name = productResult.Name;
newProduct.Price = productResult.Price;
productList.Add(newProduct);
OrderList.Add(orderResult);
}

var orders = new Orders()
{
Product = productList
};

_context.Orders.Add(orders);
_context.SaveChanges();

使用此代码我创建了另一个产品,但我需要的是将产品绑定(bind)到此订单,然后将相同的产品添加到另一个订单。可能吗?

附言

我尝试添加现有产品:

productList.Add(productResult);

但结果我只能分配每个产品一次。

最佳答案

这是一个 EF 问题而不是 MVC 问题。

您的产品类也需要导航器来订购,因此它是双向的多对多关系。目前,您有从订单到产品的一对多和从产品到订单的一对一。

在产品中

public virtual ICollection<Orders> Orders { get; set; }

我假设你有这样的东西

public class Orders
{
[key]
public int OrderId {get;set;}
public virtual ICollection<Products> Product { get; set; }
}
public class Product
{
[key]
public int ProductId {get;set;}
[ForeignKey]
public OrderId {get;set;}//remove this
public virtual Orders Order {get;set;}//replace with ICollection<Orders>
}

像这样用fluent也是可以的

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{

modelBuilder.Entity<Orders>()
.HasMany<Product>(s => s.Products)
.WithMany(c => c.Orders)
.Map(cs =>
{
cs.MapLeftKey("OrderId");
cs.MapRightKey("ProductId");
cs.ToTable("TABLENAMEFORRELATIONALTABLE");
});

}

关于c# - MVC 绑定(bind)产品到订单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37614142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com