如何解决给定代码中员工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 举报,一经查实,本站将立刻删除。