Xamarinで作業していますが、Entity Frameworkを使用するWebAPIがあります。そう基本的に、私は以下のように、仕事をする3つのテーブルを持って、私はすでにWebサービスに携帯電話から画像を送信することができますが、私は正確にすべての関係をデータベースにレコードを作成します:ASP.NET MVC Imageエンティティフレームワークを使用してデータベースにアップロードしてレコードを作成します
- 画像
- OccurenceImage
- 出現
私のWebAPIには2つのコントローラーがあり、1つは画像のアップロードを処理し、もう1つはOccurencesを処理するコントローラーです。私はOccurenceImageのレコードを作成するときにカスタムIDを設定しようとしましたが、動作しません。
ImageUploadController.cs
[HttpPost] public HttpResponseMessage UploadImage(string imageName) { var result = new HttpResponseMessage(HttpStatusCode.OK); if (Request.Content.IsMimeMultipartContent()) { Request.Content.LoadIntoBufferAsync().Wait(); Request.Content.ReadAsMultipartAsync(new MultipartMemoryStreamProvider()).ContinueWith((task) => { MultipartMemoryStreamProvider provider = task.Result; foreach (HttpContent content in provider.Contents) { Stream stream = content.ReadAsStreamAsync().Result; Image image = Image.FromStream(stream); var testName = content.Headers.ContentDisposition.Name; String filePath = HostingEnvironment.MapPath("~/Images/"); string nameImg = imageName + Guid.NewGuid(); String fullPath = Path.Combine(filePath, nameImg + ".jpg"); image.Save(fullPath); AddImageToDb(nameImg); } }); return result; } else { throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotAcceptable, "This request is not properly formatted")); } } private void AddImageToDb(string imageName) { VisitDatabase.Image image = new VisitDatabase.Image() { urlImage = imageName + ".jpg" }; OccurenceImage occurenceImage = new OccurenceImage() { idOccurence = 18, Image = image, }; db.Image.Add(image); db.OccurenceImage.Add(occurenceImage); db.SaveChanges(); }
OccurenceController.cs
[ResponseType(typeof(ActiveCitizen))] public IHttpActionResult PostOccurence(ActiveCitizen json) { Citizen citizen; if (!ModelState.IsValid) { return BadRequest(ModelState); } ActiveCitizen activeCitizen = json; var query = (from c in db.Citizen where c.ccbi == activeCitizen.NumDocument select c.idCitizen).SingleOrDefault(); Address address = new Address() { lat = 12, lon = 12, street = "Rua do Santuario", postalCode = "4490-554", locality = "Barcelos" }; OccurenceType occurenceType = new OccurenceType() { title = activeCitizen.Description, }; if (query == 0) { citizen = new Citizen() { ccbi = activeCitizen.NumDocument, nif = activeCitizen.NIF, Contact = new Contact() { name = activeCitizen.Name, email = activeCitizen.Email, phone = activeCitizen.Phone }, Address = address }; } else { citizen = db.Citizen.Find(query); } Occurence occurence = new Occurence() { solved = 0, occurenceDateTime = new DateTime(2017, 5, 23), Address = address, OccurenceType = occurenceType, Citizen = citizen }; db.Address.Add(address); db.OccurenceType.Add(occurenceType); if (query == 0) { db.Contact.Add(citizen.Contact); db.Citizen.Add(citizen); } db.Occurence.Add(occurence); db.SaveChanges(); return CreatedAtRoute("DefaultApi", new { id = occurence.idOccurence }, activeCitizen); }
アドバンのおかげでce!