所以我正在使用Code-First MVC构建在线商店
所以我现在创建了这个模型类(现在不要认为属性的类型太严重了):
产品(产品):
public Produto()
{
ListaProdutoEncomenda = new HashSet<Produto_Encomenda>();
}
public int ProdutoID { get; set; }
[Required]
[StringLength(50)]
public string Nome { get; set; }
[Required]
public double Preco { get; set; }
[Required]
public double Peso { get; set; }
[Required]
[StringLength(255)]
public string Descricao { get; set; }
[Required]
public double IVA { get; set; }
public string Imagem { get; set; }
public DateTime UltimaAtualizacao { get; set; }
public int Stock { get; set; }
public int CategoriaID {get;set;}
public virtual ICollection<Produto_Encomenda> ListaProdutoEncomenda { get; set; }
}
Encomenda(订单):
public class Encomenda
{
public Encomenda()
{
ListaProdutoEncomenda = new HashSet<Produto_Encomenda>();
}
[Key]
public int IDEncomenda { get; set; }
[Required]
public DateTime DataSubmissao { get; set; }
[Required]
public DateTime DataEnvio { get; set; }
[Required]
public int EstadoEnvioID { get; set; }
[StringLength(50)]
public string NomeDestino { get; set; }
[Required]
public int TipoExpedicaoID { get; set; }
[Required]
public int RegiaoDestinoID { get; set; }
[StringLength(50)]
public string MoradaDestino { get; set; }
[StringLength(50)]
public string CodPostalDestino { get; set; }
[Required]
[StringLength(50)]
public string MoradaFaturacao { get; set; }
[Required]
[StringLength(50)]
public string CodPostalFaturacao { get; set; }
public virtual ICollection<Produto_Encomenda> ListaProdutoEncomenda { get; set; }
}
produtos(Products)和Encomenda(Order)之间的连接表
public class Produto_Encomenda
{
[Key]
public int IDProduto_Encomenda { get; set; }
[Required]
public string NomeProduto { get; set; }
[Required]
public int Quantidade { get; set; }
[Required]
public float preco { get; set; }
[Required]
public float IVA { get; set; }
public virtual Encomenda Encomenda { get; set; }
public virtual Produto Produto { get; set; }
[ForeignKey("Encomenda")]
public int IDEncomendaFK { get; set; }
[ForeignKey("Produto")]
public int IDProdutoFK { get; set; }
}
所以我的问题是...... 让我们假装一个客户购买2或3个或更多产品。 如何将所有这些产品存储在订单的一行中? 为阅读时间提前干杯和感谢。
答案 0 :(得分:1)
我不确定你是什么意思&#34;单行订单&#34;。每个产品都是一个单独的订单项,您的实体已经通过多对多关系对其进行了建模。
然而,一般来说,这种设置是一个非常糟糕的主意。您的订单不应与产品直接相关。相反,您的订单应该只有一个订单商品,您将根据销售的产品创建这些订单商品。原因是产品很可能会发生变化。例如,如果某个产品因不再可用而被删除,那么这并不能否定它之前在订单中销售的事实。但是,为了保持参照完整性,与该产品一起销售的任何订单也必须与该产品的关系被删除。通过拥有一个完全独立的实体,即订单商品,产品可以来去,而已经创建的订单不受影响。
答案 1 :(得分:1)
我猜你想制作一个viewmodel
创建一个包含Products和Encomenda类作为属性的类 -
模型 -
public class MyViewModel
{
public Produto Pinst{get;set;}
public Encomenda Einst{get;set;}
}
控制器或方法 -
public void SomeMethod()
{
List<MyViewModel> lst = new List<MyViewModel>();
//Now suppose
foreach(var items in listThatGetCreatedWithBuyerproductInfo)
{
MyViewModel obj = new MyViewModel ();
obj.Pinst = new Produto();
obj.Einst = new Encomenda();
//Here goes your properties from item in respected class instances
obj.Pinst.Nome = items.Nome;
obj.Einst.DataSubmissao = items.DataSubmissao;
//when you are done loading add obj to list
lst.Add(obj);
}
}
希望它有助于它不告诉我!!