微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

给定代码中员工emp的需求是什么?

如何解决给定代码中员工emp的需求是什么?

我正在尝试理解给定的代码,有人可以告诉我 employee emp 在这里到底在做什么? 这是代码:-

public ActionResult Edit(string id)
{
   Employee emp;
   string cnstr = System.Configuration.ConfigurationManager.ConnectionStrings["abcd123"].ConnectionString;
   try
   {
       using (OracleConnection connection = new OracleConnection(cnstr))
       {
           string query = @"
            select
                 ID,FULL_NAME,EMAIL_ADDRESS,CURR_DIVISION,CURR_DEPARTMENT
            from
                 T_EMPLOYEE
            where
                 ID = :ID";

           emp = connection.QuerySingleOrDefault<Employee>(query,new { ID = id });
       }
       return View(emp);
   }

   catch (Exception ex)
   {
       throw;
   }

}

解决方法

Employee emp;是类型emp的局部变量Employee的声明。此时未分配任何值。

Employee是一个类,其中包含员工的属性,例如ID,姓名和出生日期。 O / R映射器(EF或EF Core)自动将数据库的记录转换为这种类型的对象。

(可选)可以在同一位置声明和初始化变量。然后必须删除行Employee emp;,查询看起来像这样:

Employee emp = connection.QuerySingleOrDefault<Employee>(query,new { ID = id });
return View(emp);

然后必须将return语句移到using语句内,因为emp的范围现在仅限于using块。

或者,由于现在编译器可以从初始化代码(=右侧的代码)推断类型,因此可以使用var

var emp = connection.QuerySingleOrDefault<Employee>(query,new { ID = id });
return View(emp);

请注意,emp的类型仍然严格为Employee。只是我们让编译器找到了它,而不是将其明确写下来。

或者您可以完全删除临时变量:

return View(connection.QuerySingleOrDefault<Employee>(query,new { ID = id }));

请注意,using语句仍在执行方法返回之前关闭和处置连接的工作。这是C#的魔力。

,

员工是您Model中的View。通过调用以下命令将其填充到emp实例中: connection.QuerySingleOrDefault<Employee>(query,new { ID = id });

它通过以下方式在视图中返回:

return View(emp);
,

员工emp最初没有分配任何值。

从Oracle数据库根据ID返回数据时,该值将存储在emp中。

现在,此emp也是您的控制器方法的视图模型。从emp返回的数据被推送到View。

您必须使用以下方法从View文件中访问此值: @model员工

@Model。[属性名称]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。