从API调用实体框架创建数据库记录

问题描述

我四处搜寻,但是找不到确实有用的信息。

上下文-我是一位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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...