【问题标题】:ASP.NET MVC Image Upload and create records on database with Entity FrameworkASP.NET MVC 图像上传并使用实体框架在数据库上创建记录
【发布时间】:2017-11-11 08:37:01
【问题描述】:

我正在使用 Xamarin,并且我有一个使用实体框架的 WebAPI。我已经可以将图像从手机发送到网络服务,但我想在数据库中正确创建所有关系的记录,所以基本上我有 3 个表可以工作,如下所示:

  1. 图片
  2. OccurenceImage
  3. 出现

Model Diagram

在我的 WebAPI 中,我有两个控制器,一个用于处理图像上传,另一个用于处理事件。我在创建 OccurenceImage 记录时尝试设置自定义 ID,但它不起作用。

ImageUploadController.cs

[HttpPost]
        公共 HttpResponseMessage UploadImage(字符串图像名称)
        {
            var 结果 = 新的 HttpResponseMessage(HttpStatusCode.OK);
            if (Request.Content.IsMimeMultipartContent())
            {
                Request.Content.LoadIntoBufferAsync().Wait();
                Request.Content.ReadAsMultipartAsync(new MultipartMemoryStreamProvider()).ContinueWith((task) =>
                {
                    MultipartMemoryStreamProvider provider = task.Result;
                    foreach(provider.Contents 中的 HttpContent 内容)
                    {
                        流流 = content.ReadAsStreamAsync().Result;
                        图像图像 = Image.FromStream(stream);
                        var testName = content.Headers.ContentDisposition.Name;
                        String filePath = HostingEnvironment.MapPath("~/Images/");
                        字符串 nameImg = imageName + Guid.NewGuid();
                        String fullPath = Path.Combine(filePath, nameImg + ".jpg");
                        image.Save(fullPath);
                        AddImageToDb(nameImg);
                    }
                });

                返回结果;
            }
            别的
            {
                throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotAcceptable, "此请求格式不正确"));
            }

        }

        私人无效 AddImageToDb(字符串图像名称)
        {
            VisitDatabase.Image 图像 = 新的 VisitDatabase.Image()
            {
                urlImage = imageName + ".jpg"
            };

            OccurenceImageoccurenceImage = new OccurenceImage()
            {
               idOccurence = 18,
               图像 = 图像,

            };
            db.Image.Add(图像);
            db.OccurenceImage.Add(occurenceImage);
            db.SaveChanges();
        }


OccurenceController.cs

[ResponseType(typeof(ActiveCitizen))]
        公共 IHttpActionResult PostOccurence(ActiveCitizen json)
        {
            公民公民;
            if (!ModelState.IsValid)
            {
                返回错误请求(模型状态);
            }
            ActiveCitizen 活跃公民 = json;
            var query = (来自 db.Citizen 中的 c
                其中 c.ccbi == activeCitizen.NumDocument
                选择 c.idCitizen).SingleOrDefault();
            地址地址 = 新地址()
            {
                纬度 = 12,
                lon = 12,
                街道 = "圣殿街",
                邮政编码 = "4490-554",
                locality = "巴塞洛斯"
            };


            OccurenceTypeoccurenceType = new OccurenceType()
            {
                标题 = activeCitizen.Description,
            };
            如果(查询 == 0)
            {
                公民=新公民()
                {
                    ccbi = activeCitizen.NumDocument,
                    nif = activeCitizen.NIF,
                    联系人 = 新联系人()
                    {
                        name = activeCitizen.Name,
                        电子邮件 = activeCitizen.Email,
                        电话 = activeCitizen.Phone
                    },
                    地址 = 地址
                };
            }
            别的
            {
                公民 = db.Citizen.Find(查询);
            }

            出现次数 = 新出现次数()
            {
                已解决 = 0,
                发生日期时间 = 新日期时间(2017, 5, 23),
                地址 = 地址,
                发生类型 = 发生类型,
                公民=公民
            };

            db.Address.Add(地址);
            db.OccurenceType.Add(occurenceType);
            如果(查询 == 0)
            {
                db.Contact.Add(citizen.Contact);
                db.Citizen.Add(公民);
            }
            db.Occurence.Add(出现);
            db.SaveChanges();
            return CreatedAtRoute("DefaultApi", new { id =occurrence.idOccurence }, activeCitizen);
        }


提前致谢!

【问题讨论】:

    标签: c# asp.net entity-framework asp.net-web-api


    【解决方案1】:

    上面的代码是正确的,似乎问题出在表 OccurenceImage 上,字段 idOccurenceImage 身份规范已禁用,只需要启用并像魅力一样工作。我希望这可以帮助其他人解决这种新手问题!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-29
      • 2022-08-16
      • 1970-01-01
      • 2018-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-08
      相关资源
      最近更新 更多