【发布时间】:2017-11-11 08:37:01
【问题描述】:
我正在使用 Xamarin,并且我有一个使用实体框架的 WebAPI。我已经可以将图像从手机发送到网络服务,但我想在数据库中正确创建所有关系的记录,所以基本上我有 3 个表可以工作,如下所示:
- 图片
- OccurenceImage
- 出现
在我的 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