【问题标题】:cannot implicitly convert type db.entities1 to system.collection.generic.list<aspnetWEBAPI.Home_Visits_Request> when post WebAPI发布 WebAPI 时无法将类型 db.entities1 隐式转换为 system.collection.generic.list<aspnetWEBAPI.Home_Visits_Request>
【发布时间】:2021-01-09 14:43:38
【问题描述】:

我在 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,的步骤3中

"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 方法进行一些更改,如何解决这个错误请大家帮忙。

【问题讨论】:

    标签: c# asp.net-mvc asp.net-web-api


    【解决方案1】:

    更改您的代码:

    
    
     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 块中也是一个好主意

    【讨论】:

    • 非常感谢它的工作没有错误,但我现在还需要一件事,插入后的数据返回表中的所有行我可以只返回插入的行 Data = entities.Set().ToList(),
    • 我更新了代码并使用了新的变量结果@ZiadAdnan
    • 谢谢您的帮助,我对这个解决方案很满意 :) :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-07
    • 2014-09-07
    • 1970-01-01
    相关资源
    最近更新 更多