Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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
C# 将JSON数据从一个控制器发布到多个模型/表中_C#_Asp.net Core_.net Core - Fatal编程技术网

C# 将JSON数据从一个控制器发布到多个模型/表中

C# 将JSON数据从一个控制器发布到多个模型/表中,c#,asp.net-core,.net-core,C#,Asp.net Core,.net Core,我是ASP核心的新手,我想发布一个来自Angular6客户端的JSON JSON如下所示,请使用任何JSON for formatter将其可视化: {"supplier":10001,"date":"2018-09-03T20:42:29Z","summary":[{"day":"1","aliments": ["1012","1016","1017","1013","1021","1020"]},{"day":"2","aliments": ["1015","1019","1023","

我是ASP核心的新手,我想发布一个来自Angular6客户端的JSON

JSON如下所示,请使用任何JSON for formatter将其可视化:

{"supplier":10001,"date":"2018-09-03T20:42:29Z","summary":[{"day":"1","aliments": 
["1012","1016","1017","1013","1021","1020"]},{"day":"2","aliments": 
["1015","1019","1023","1022","1018","1014"]},{"day":"3","aliments": 
["1027","1031","1030","1026","1025","1029"]},{"day":"4","aliments": 
["1040","1039","1035","1033","1038","1036"]},{"day":"5","aliments": 
["1032","1037","1042","1043","1041","1038"]}]}
此信息应插入两个表中。第一个表是具有以下结构的主表:

模型和表格的名称为“菜单”

立柱: MenuId, 日期 FK_供应商

EF核心模型:

第二个是menudia表和模型:

立柱: 梅努迪德, FK_AlimentId, FK_MenuId, 迪亚

EF核心:

我拍摄了两张图片,向您展示了如何将数据插入数据库:

菜单:

梅努迪亚:

我创建了两个模型,根据需要处理数据,结果如下:

NewMenuContent模型:

注意:这个问题的一些变量和属性已经从西班牙语翻译成英语,如果你看到任何打字错误,不要在意

那么如何在menudia表中插入数据,如上图所示?请注意,我希望在上面发布的同一控制器和同一功能中实现这一点

登录此过程后,用户将每天选择一系列食品,这些食品将作为特定供应商食品菜单的一部分,因此,例如,如果用户选择供应商麦当劳,他将能够每天选择几个食品星期一=汉堡、薯条、鸡块、可乐


我们非常感谢您在这方面提供的任何帮助,就像您在搜索web和尝试各种不同的东西时没有成功一样。

此Microsoft文档可能会有帮助:

如果创建多个新的相关实体,请将其中一个添加到 上下文也会导致添加其他内容

我已经编写了类似的代码,可以验证EF Core是否应该按照您在问题中描述的那样创建相关实体


上有一个示例应用程序。

经过一些研究,这个解决方案引导我找到了正确的方法!
public int MenuId { get; set; }
public DateTime Date { get; set; }
public int FkSupplier { get; set; }
public int? MenuDiaId { get; set; } 
public int? FkAlimentId { get; set; }
public int? FkMenuId { get; set; }
public int? Dia { get; set; }
public int? menuid { get; set; }
public int suplidor { get; set; }
public DateTime fecha { get; set; }
public List<MenuItems> menuresumen { get; set; }
   public int Day { get; set; }

   public List<dynamic> alimentos { get; set; }
[HttpPost]
        public int  PostMenu([FromBody] NewMenuContent menu)
        {

            var newmenu = new Menu
            {
                FkSuplidorId = menu.supplier,
                Semana = menu.date,
            };
            var menuid = _context.Menu
            .Where(x => x.FkSupplierId == menu.supplier)
            .Where(x => x.date == menu.date)
            .Select(x => x.MenuId).FirstOrDefault();
            _context.Menu.Add(newmenu);


            _context.SaveChanges();
            return menuid;

        } //NOTE: "menu" is the json. 
using (var context = new BloggingContext())
{
    var blog = new Blog
    {
        Url = "http://blogs.msdn.com/dotnet",
        Posts = new List<Post>
        {
            new Post { Title = "Intro to C#" },
            new Post { Title = "Intro to VB.NET" },
            new Post { Title = "Intro to F#" }
        }
    };

    context.Blogs.Add(blog);
    context.SaveChanges();
}