问题描述
我四处搜寻,但是找不到确实有用的信息。
上下文-我是一位FE开发人员,对C#/ Entity / API创建非常陌生,在我学习到如此宽恕我的无知之际,我正在绊倒自己。
我们有一个用Entity编写的API,我正在尝试根据最终将由用户通过Angular前端提交的信息创建sql数据库记录。
控制器(如果可能)将具有GET和DB调用(尚未弄清楚这是否与PUT相同,但我认为是吗?) 到目前为止,这是我的控制器代码:
using System;
using System.Text;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Data.Entity.Validation;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.Description;
using SageApi.Models;
using SageApi.SageBOI;
using SageDataAccess;
namespace SageApi.Controllers
{
/*This was commented out as I'm not sure how to test it without a PUT method
public class updScoutToTextBuilderInfoDB : DbContext
{
public updScoutToTextBuilderInfoDB(updScoutToTextBuilderInfoDTO data)
{
using (MAS_PLUEntities entities = new MAS_PLUEntities())
{
var newRecord = new APP_Customer_Testing()
{
id = data.id,FirstName = data.superFirstName,LastName = data.superLastName,Email1 = data.superEmail1,Email2 = data.superEmail2,Email3 = data.superEmail3,CompanyName = data.company,SalesOrderNum = data.salesorderno,PhoneNum = data.superPhone,Subdivision = data.subdivision
};
entities.APP_Customer_Testing.Add(newRecord);
entities.SaveChanges();
}
}
}*/
public class updScoutToTextBuilderInfoController : ApiController
{
public IEnumerable<APP_Customer_Testing> Get()
{
using (MAS_PLUEntities entities = new MAS_PLUEntities())
{
return entities.APP_Customer_Testing.ToList();
}
}
[HttpPut]
public HttpResponseMessage Put([FromBody] updScoutToTextBuilderInfoDTO data)
{
try
{
{
if (entities.APP_Customer_Testing.FirstOrDefault() != null)
{
var newRecord = new APP_Customer_Testing()
{
id = data.id,Subdivision = data.subdivision
};
entities.APP_Customer_Testing.Add(newRecord);
entities.SaveChanges();
var message = "Entities are not null";
return Request.CreateResponse(HttpStatusCode.OK,message);
}
else
{
var message = "ELSE statement - entities came back NULL";
return Request.CreateErrorResponse(HttpStatusCode.BadRequest,message);
}
}
}
catch (Exception ex)
{
var errorMsg = "Error Message: " + ex;
return Request.CreateErrorResponse(HttpStatusCode.BadRequest,errorMsg);
}
return Request.CreateResponse(HttpStatusCode.OK,"Customer updated successfully!");
}
}
}
当我通过邮递员到达终点时,我得到答复(措辞):
System.NullReferenceException:对象引用未设置为对象的实例。第72行
我的代码中的第72行是var newRecord = new APP_Customer_Testing()
。
这是我迷路的地方。我并不想找任何人给我解决方案,我只需要一些帮助就可以向我指出正确的方向。
如果您需要更多信息,请告诉我,我们将竭诚为您服务。
感谢您可能提供的所有帮助。
更新 这是我更新的代码:
[HttpPut]
public HttpResponseMessage Put([FromBody] updScoutToTextBuilderInfoDTO data)
{
try
{
using (MAS_PLUEntities entities = new MAS_PLUEntities())
{
if (data == null)
{
var newRecord = new updScoutToTextBuilderInfoDTO()
{
id = data.id,superFirstName = data.superFirstName,superLastName = data.superLastName,superEmail1 = data.superEmail1,superEmail2 = data.superEmail2,superEmail3 = data.superEmail3,company = data.company,salesorderno = data.salesorderno,superPhone = data.superPhone,subdivision = data.subdivision
};
entities.APP_Customer_Testing.Add(newRecord);
entities.SaveChanges();
var message = "Record created successfully";
return Request.CreateResponse(HttpStatusCode.OK,message);
}
else
{
var message = "Record not created";
return Request.CreateErrorResponse(HttpStatusCode.BadRequest,message);
throw new ArgumentNullException("data");
}
}
}
catch (Exception ex)
{
var errorMsg = "Error Message: " + ex;
return Request.CreateErrorResponse(HttpStatusCode.BadRequest,errorMsg);
}
}
但是我收到与此行相关的错误:
entities.APP_Customer_Testing.Add(newRecord)
表示Argument 1: Cannot convert from SageApi.Models.updScoutToTextBuilderInfoDTO to SageDataAccess.APP_Customer_Testing
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)