Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 网上商店-使用多个产品MVC.net创建订单_Asp.net_Asp.net Mvc_Model View Controller_Ef Code First_Code First - Fatal编程技术网

Asp.net 网上商店-使用多个产品MVC.net创建订单

Asp.net 网上商店-使用多个产品MVC.net创建订单,asp.net,asp.net-mvc,model-view-controller,ef-code-first,code-first,Asp.net,Asp.net Mvc,Model View Controller,Ef Code First,Code First,因此,我正在使用代码优先的MVC构建一个在线商店 所以我现在创建了这个模型类(现在不要把属性的类型看得太重): 产品(Produto): 所以我的问题是。。 让我们假设一位顾客购买了2、3种或更多的产品。 如何在一个订单的单行中存储所有这些产品? 干杯并提前感谢您花时间阅读。我不知道您所说的“订单的一行”是什么意思。每个产品都是一个单独的行项目,您的实体已经通过多对多关系对此进行了建模 然而,一般来说,这种设置是一个非常糟糕的主意。您的订单不应与产品直接相关。相反,您的订单应该只包含一个订单项,

因此,我正在使用代码优先的MVC构建一个在线商店

所以我现在创建了这个模型类(现在不要把属性的类型看得太重):

产品(Produto):

所以我的问题是。。 让我们假设一位顾客购买了2、3种或更多的产品。 如何在一个订单的单行中存储所有这些产品?
干杯并提前感谢您花时间阅读。

我不知道您所说的“订单的一行”是什么意思。每个产品都是一个单独的行项目,您的实体已经通过多对多关系对此进行了建模


然而,一般来说,这种设置是一个非常糟糕的主意。您的订单不应与产品直接相关。相反,您的订单应该只包含一个订单项,并且您将根据销售的产品创建这些订单项。原因是产品很可能会发生变化。例如,如果某个产品因不再可用而被删除,这并不否认它以前是在订单中销售的。然而,为了保持参考完整性,任何与该产品一起销售的订单也必须删除它们与该产品的关系。通过拥有一个完全独立的实体,即订单项,产品可以来来去去,而已经创建的订单不会受到影响。

我不确定您所说的“订单的一行”是什么意思。每个产品都是一个单独的行项目,您的实体已经通过多对多关系对此进行了建模


然而,一般来说,这种设置是一个非常糟糕的主意。您的订单不应与产品直接相关。相反,您的订单应该只包含一个订单项,并且您将根据销售的产品创建这些订单项。原因是产品很可能会发生变化。例如,如果某个产品因不再可用而被删除,这并不否认它以前是在订单中销售的。然而,为了保持参考完整性,任何与该产品一起销售的订单也必须删除它们与该产品的关系。通过拥有一个完全独立的实体,即订单项,产品可以来来去去去,而已经创建的订单不会受到影响。

我猜您正在寻找一个viewmodel

创建一个包含产品的类,并将类作为属性进行编码-

模型-

     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);
       } 
    }
public void SomeMethod()
{
List lst=新列表();
//现在假设
foreach(GetCreatedWithBuyerProductInfo列表中的变量项)
{
MyViewModel obj=新的MyViewModel();
obj.Pinst=新产品();
obj.Einst=new Encomenda();
//下面是受尊重的类实例中的项的属性
obj.Pinst.Nome=项目.Nome;
obj.Einst.DataSubmissao=items.DataSubmissao;
//加载完毕后,将obj添加到列表中
第一次添加(obj);
} 
}

如果它不告诉我,希望它能帮助我

我想您是想制作一个viewmodel

创建一个包含产品的类,并将类作为属性进行编码-

模型-

     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);
       } 
    }
public void SomeMethod()
{
List lst=新列表();
//现在假设
foreach(GetCreatedWithBuyerProductInfo列表中的变量项)
{
MyViewModel obj=新的MyViewModel();
obj.Pinst=新产品();
obj.Einst=new Encomenda();
//下面是受尊重的类实例中的项的属性
obj.Pinst.Nome=项目.Nome;
obj.Einst.DataSubmissao=items.DataSubmissao;
//加载完毕后,将obj添加到列表中
第一次添加(obj);
} 
}

如果它不告诉我,希望它能帮助我

谢谢你的回复。我理解你所说的,并且100%有道理,尽管我如何才能做到这一点,或者我应该把它与什么联系起来?也许这很简单,但现在还没有敲响警钟,我也不确定如何实现它。这取决于你想要什么。简单地说,我说的只是另一个实体,比如
OrderItem
。在内部,它可能看起来与当前的
Produto_Encomenda
非常相似,除了与产品直接相关之外,您只需将相关的产品信息(名称、图像等)放在这里。这种关系将是一对多,而不是多对多。每个
OrderItem
将直接与一个订单相关。如果您愿意,您仍然可以将外键返回到产品,但是您需要将此外键设置为NULL,并且应该将其设置为DELETE set NULL。好的,Chris,我会尝试,我会让您知道事情的进展。谢谢你的回复。我理解你所说的,并且100%有道理,尽管我如何才能做到这一点,或者我应该把它与什么联系起来?也许这很简单,但现在还没有敲响警钟,我也不确定如何实现它。这取决于你想要什么。简单地说,我说的只是另一个实体,比如
OrderItem
。在内部,它可能看起来与当前的
Produto_Encomenda
非常相似,除了与产品直接相关之外,您只需将相关的产品信息(名称、图像等)放在这里。这种关系将是一对多,而不是多对多。每个
OrderItem
将直接与一个订单相关。如果您愿意,您仍然可以将外键返回到产品,但是您需要将此外键设置为NULL,并且应该将其设置为DELETE set NULL。好的,Chris,我会尝试,我会让您知道事情的进展。谢谢
    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);
       } 
    }