问题描述
我在 WEB-API 项目中创建了 post 操作,这是步骤:
1- 连接到数据库并从数据库更新模型并使用 Data.Edmx
2- 创建模型 homeVisit
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using aspnetWEBAPI;
public class homeVisit
{
public bool Success { get; set; }
public List<Home_Visits_Request> Data { get; set; }
public string Message { get; set; }
}
3- 创建控制器并发布操作
[HttpPost]
[ActionName("posthomevisitrequest")]
public HttpResponseMessage posthomevisitrequest([FromBody] Home_Visits_Request Labrequest)
{
using (DBEntities1 entities = new DBEntities1())
{
entities.Home_Visits_Request.Add(Labrequest);
entities.SaveChanges();
homeVisit homeRequest = new homeVisit
{
Success = true,Data = entities,Message = "Data Inserted "
};
FalseStatus falsestat = new FalseStatus
{
Success = false,Message = "Cannot Insert Data "
};
if (!entities.Home_Visits_Request.Any())
{
return Request.CreateResponse(HttpStatusCode.NotFound,falsestat);
}
else
{
return Request.CreateResponse(HttpStatusCode.OK,homeRequest);
}
}
此行 Data = entities,
"cannot implicitly convert type db.entities1 to system.collection.generic.list<aspnetWEBAPI.Home_Visits_Request>
以及此行中的另一个错误 if (!entities.Any())
"DBEntities1 does not contain a deFinition for 'Any' and no extension method Any accepting the first argument for DBEntities1 Could be found are you missing a using directive or assembly reference ? "
我在 Get 方法中使用了相同的代码和结构,但我认为我需要使用 post 方法进行一些更改,请帮助您如何解决此错误。
解决方法
更改您的代码:
using (DBEntities1 entities = new DBEntities1())
{
entities.Set<Home_Visits_Request>().Add(Labrequest);
var result= entities.SaveChanges();
if (result == 0)
{
FalseStatus falsestat = new FalseStatus
{
Success = false,Message = "Cannot Insert Data "
};
return Request.CreateResponse(HttpStatusCode.NotFound,falsestat);
}
homeVisit homeRequest = new homeVisit
{
Success = true,Data = entities.Set<Home_Visits_Request>().ToList(),Message = "Data Inserted "
};
return Request.CreateResponse(HttpStatusCode.OK,homeRequest);
并检查您是否使用了 System.Linq;在您的控制器类中。
更新:
如果您只想返回添加的记录,请更改您的模型类
public class homeVisit
{
public bool Success { get; set; }
public Home_Visits_Request Data { get; set; }
public string Message { get; set; }
}
并使用此代码:
homeVisit homeRequest = new homeVisit
{
Success = true,Data = Labrequest,Message = "Data Inserted "
};
return Request.CreateResponse(HttpStatusCode.OK,homeRequest);
我认为将 save 包装在 try...catch 块中也是个好主意