【问题标题】:Getting error message: CS0029: Cannot implicitly convert (ASP.NET Core MVC & C#)收到错误消息:CS0029:无法隐式转换(ASP.NET Core MVC 和 C#)
【发布时间】:2021-02-24 07:58:15
【问题描述】:

我在尝试定义我的控制器功能时收到该错误消息(我使用的是 ASP.NET Core 5.0)。我一直在尝试解决它一段时间,但没有成功,我几乎陷入困境。

看看:

控制器功能显示错误:

public ActionResult Edit(int id)
{
    using (Approver approver = dbContext.GetApproverbyId(id))
    {
        return View(approver);
    }
}

public ActionResult Index()
{
    List<approver> approverList = dbContext.GetAllapprovers().ToList();
    return View(approverList);
}

public ActionResult Details(int id)
{
    approver approver = dbContext.GetApproverbyId(id);
    return View(approver);
}

我的 CONTEXT 函数:

public IEnumerable<approver> GetAllapprovers()
{
    var approverList = new List<approver>();

    using (SqlConnection con = new SqlConnection(connectionString))
    {
        SqlCommand cmd = new SqlCommand("SP_GetAllApprovers", con)
                {
                    CommandType = System.Data.CommandType.StoredProcedure
                };

        con.Open();

        SqlDataReader dr = cmd.ExecuteReader();

        while (dr.Read())
        {
            var approver = new approver
                    {
                        CODE = Convert.ToInt32(dr["CODE"].ToString()),
                        MAIL = dr["MAIL"].ToString()
                    };

            approversList.Add(approver);
        }

        con.Close();
    }

    return approversList;
}

public approver GetApproverbyId(int? id)
{
    var approver = new approver();

    using (SqlConnection con = new SqlConnection(connectionString))
    {
        SqlCommand cmd = new SqlCommand("SP_GetapproverById", con);
        cmd.CommandType = System.Data.CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@CODE", id);

        con.Open();

        SqlDataReader dr = cmd.ExecuteReader();

        while (dr.Read())
        {
            approver.CODE = Convert.ToInt32(dr["CODE"].ToString());
            approver.MAIL = dr["MAIL"].ToString();
        }

        con.Close();
    }

    return approver;
}

我做错了什么?可以帮我解决这个问题吗?我很迷茫

显示错误的行:

dbContext.GetApproverbyId(id))

dbContext.GetAllapprovers().ToList();

dbContext.GetApproverbyId(id);


【问题讨论】:

  • 嘿@00110001,感谢您的回复。我刚刚编辑了我的帖子,请看一下
  • 强烈建议你看看Dapper,它可以让生活变得更轻松,让你不必写那些无聊的东西“胶水”代码只是为了从数据库中加载数据.....
  • 你在标题中谈到了那个错误,但我看到的只是这个无法隐式转换,那是什么错误?你有那个错误的确切线在哪里?这些信息会让其他人更快地进入问题,实际上对于某些人来说,这将是激发他们首先关心问题所必需的。
  • 您是否对approver 有两个定义?您的 dbContext 返回一个版本,但您的控制器将另一个版本用于其局部变量

标签: c# asp.net-core asp.net-core-mvc


【解决方案1】:

我认为您的“connectionstring”.SQL 连接导致的问题未能选择您的“appsettings.json”文件的连接字符串。因为你在这里发现了错误

dbContext.GetApproverbyId(id))

dbContext.GetAllapprovers().ToList();

dbContext.GetApproverbyId(id); 所以你必须正确选择你的连接字符串。

private IConfiguration Configuration;
public HomeController(IConfiguration _configuration)
    {
        Configuration = _configuration;
    }

现在你必须改变你的上下文函数


public IEnumerable<approver> GetAllapprovers()
{
    var approveresLista = new List<approver>();
    string connectionString=  Configuration.GetConnectionString("YOUR CONNECTION STRING NAME");

    using (SqlConnection con = new SqlConnection(connectionString))
    {
        SqlCommand cmd = new SqlCommand("SP_GetAllApprovers", con)
                {
                    CommandType = System.Data.CommandType.StoredProcedure
                };

        con.Open();

        SqlDataReader dr = cmd.ExecuteReader();

        while (dr.Read())
        {
            var approver = new approver
                    {
                        CODE = Convert.ToInt32(dr["CODE"].ToString()),
                        MAIL = dr["MAIL"].ToString()
                    };

            approversList.Add(approver);
        }

        con.Close();
    }

    return approversList;
}

使用与上述相同的其他上下文方法。我认为它会起作用。如果您对上述代码有任何问题。告诉我。

【讨论】:

  • 您好,谢谢您的回复。我已经编辑了我的问题,可以再检查一次吗?
  • @programming_amazing 我回复了我们的聊天框。请检查。
猜你喜欢
  • 1970-01-01
  • 2014-05-28
  • 2015-08-04
  • 2014-01-28
  • 1970-01-01
  • 2017-10-06
  • 2022-08-23
  • 1970-01-01
  • 2020-10-04
相关资源
最近更新 更多