【问题标题】:there is a problem adding entity in .net core在 .net 核心中添加实体时出现问题
【发布时间】:2021-08-18 02:09:01
【问题描述】:

我在 .net core 中向数据库添加实体时遇到问题。我的所有代码执行都没有错误,但任何记录都插入到数据库中,这是我在下面添加的服务

        public async Task<int> AddHpl(IFormFile ClinicImgUp, AddHealthPlaceViewModel addHealthPlaceViewModel)
    {
        TableHpl tableHpl = new TableHpl
        {
            TabloTitle = addHealthPlaceViewModel.TabloTitle,
            Address = addHealthPlaceViewModel.Address,
            Services = addHealthPlaceViewModel.Services,
            Others = addHealthPlaceViewModel.Others,
            Personels = addHealthPlaceViewModel.Personels,
            CityCode = addHealthPlaceViewModel.CityCode,
            Recid = addHealthPlaceViewModel.Recid,
            Telegram = addHealthPlaceViewModel.Telegram,
            Email = addHealthPlaceViewModel.Email,
            Website = addHealthPlaceViewModel.Website,
            Instagram = addHealthPlaceViewModel.Instagram,
            PlaceCode = addHealthPlaceViewModel.PlaceCode,
            TableHplphones = new List<TableHplphone>
            {
                new TableHplphone
                {
                    Mobile = addHealthPlaceViewModel.Hplphones[0].Mobile,
                    OfficePhone = addHealthPlaceViewModel.Hplphones[0].OfficePhone
                },
                new TableHplphone
                {
                    Mobile = addHealthPlaceViewModel.Hplphones[1].Mobile,
                    OfficePhone = addHealthPlaceViewModel.Hplphones[1].OfficePhone
                }
            }
        };
        if (ClinicImgUp != null && ClinicImgUp.IsImage())
        {

            tableHpl.OfficePic = NameGenerator.GenerateUniqCode() + Path.GetExtension(ClinicImgUp.FileName);
            string imagePath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot/img", tableHpl.OfficePic);
            await using var stream = new FileStream(imagePath, FileMode.Create);
            ImageResizer.ResizeImage(ClinicImgUp, stream);
        }

        await _context.TableHpls.AddAsync(tableHpl);
        return tableHpl.Hplid;
    }

我们将不胜感激任何帮助

【问题讨论】:

  • 欢迎来到 Stack Overflow。请通过tour 了解 Stack Overflow 的工作原理,并阅读How to Ask 以了解如何提高问题的质量。然后edit你的问题包括你拥有的完整源代码作为minimal reproducible example,其他人可以编译和测试。请看:What Do You Mean “It Doesn't Work”?
  • 您没有将任何内容保存到数据库中。 EF Core 不处理连接和表,它处理 objects 、它们到表的映射以及批量持久化 object 更改。你从不打电话给SaveChanges,所以什么都没有保存

标签: c# asp.net-core .net-core entity-framework-core object-initializers


【解决方案1】:

替换

 await _context.TableHpls.AddAsync(tableHpl);

有了这个

 _context.TableHpls.Add(tableHpl);
await _context.SaveChangesAsync();

我认为你也必须添加一些验证:

 TableHpl tableHpl = new TableHpl
        {
            TabloTitle = addHealthPlaceViewModel.TabloTitle,
            Address = addHealthPlaceViewModel.Address,
            Services = addHealthPlaceViewModel.Services,
            Others = addHealthPlaceViewModel.Others,
            Personels = addHealthPlaceViewModel.Personels,
            CityCode = addHealthPlaceViewModel.CityCode,
            Recid = addHealthPlaceViewModel.Recid,
            Telegram = addHealthPlaceViewModel.Telegram,
            Email = addHealthPlaceViewModel.Email,
            Website = addHealthPlaceViewModel.Website,
            Instagram = addHealthPlaceViewModel.Instagram,
            PlaceCode = addHealthPlaceViewModel.PlaceCode
        };
if (addHealthPlaceViewModel.Hplphones!=null &&
     addHealthPlaceViewModel.Hplphones.Count > 0
{
 var tableHplphones = new List<TableHplphone>();

   foreach(var phone in addHealthPlaceViewModel.Hplphones)
     {
     
             tableHplphones.Add(  new TableHplphone
                {
                    Mobile = item.Mobile,
                    OfficePhone = item.OfficePhone
                }
           );
      }

tableHpl.TableHplphones=tableHplphones;
}

【讨论】:

  • 谢谢你,我不知道为什么我忘记了 savechanges() :)
  • 请不要忘记接受答案。
  • 由于该方法使用异步任务,我建议使用 await _context.TableHpls.AddAsync(tableHpl);等待 _context.SaveChangesAsync();
  • 谢谢你们,它现在可以工作了。我还有一个问题。假设用户没有填写电话详细信息的第二个文本框我的意思是 Hplphones[1] 它将在数据库中插入一个完整的空记录我如何在上面代码中的对象初始化程序中控制这个问题谢谢
  • @rezasetareh 请也发布您的 TableHpl 课程。在此之后我只能给你一些建议
猜你喜欢
  • 2015-06-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-22
  • 2017-06-18
  • 1970-01-01
  • 1970-01-01
  • 2016-11-27
  • 2021-11-06
相关资源
最近更新 更多