栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在没有EF的ASP.NET MVC中使用普通SQL?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在没有EF的ASP.NET MVC中使用普通SQL?

这只是一个示例。(经过测试和工作)。这就是将

GetUniversities
方法保留在控制器类中。我建议您将
GetUniversities
方法移至某个服务层,以便许多UI
/控制器可以使用该方法。

    public ActionResult Index()    {       var items= GetUniversities();       return View(items);    }    private List<DataRow> GetUniversities()    {        List<DataRow> list=null;        string srtQry = "SELECt  U.* FROM Office O  INNER JOIN     CampusUniversity CU ON  O.IdCampus equals CU.IdCampus   INNER JOIN UNIVERSITY U ON U.IdUniversity=CU.IdUniversity";        string connString = "Database=yourDB;Server=yourServer;UID=user;PWD=password;";        using (SqlConnection conn = new SqlConnection(connString))        { string strQry = ""; using(SqlCommand objCommand = new SqlCommand(srtQry, conn)) {    objCommand.CommandType = CommandType.Text;    DataTable dt = new DataTable();    SqlDataAdapter adp = new SqlDataAdapter(objCommand);    conn.Open();    adp.Fill(dt);    if (dt != null)    {       list = dt.AsEnumerable().ToList();    } }        }        return list;    }

请记住,GetCustomers方法将返回一个DataRows列表。不是您的自定义域实体。 实体框架为您提供了域实体列表
。因此,在自定义SQL情况下,您需要自己将数据行映射到自定义对象的实例。

使用LINQ,您可以像这样将DataRow的列表转换为自定义对象

public ActionResult Index(){   var items= GetCustomers();   var newItems = (from p in items select new {     Name= p.Field<String>("Name"),     CampusName= p.Field<String>("CampusName") }).ToList();    return View(newItems);}

这会给你其中有2个属性匿名类型的列表,

Name
CampusName
。假设Name和CampusName是查询结果中出现的2列。

EDIT2:按照注释,要在视图中列出这些数据,请在“视图”
文件夹下的控制器(我们在其中编写了此操作方法的文件夹)文件夹中创建一个名为“索引”的视图。我们需要使其成为强类型视图。可是等等!我们要传递给视图什么类型?

我们的结果是匿名类型。因此,在这种情况下,我们将创建一个ViewModel,而不是匿名的,我们将返回ViewModel的列表。

public class UniversityViewModel{  public string UniversityName { set;get;}  public string CampusName { set;get;}}

现在,我们将像这样更新索引操作中的代码。

var newItems = (from p in items      select new UserViewModel      {         UniversityName = p.Field<String>("Name"),         CampusName = p.Field<String>("CampusName")      }).ToList();

唯一的变化是我们现在在这里提到一种类型。因此输出不再是匿名类型。但已知类型。

让我们回到我们的View并编写这样的代码。

@model IEnumerable<SO_MVC.Models.UserViewModel>@foreach (var item in Model){   <p>@item .UniversityName @item.CampusName</p>}

此视图强烈键入我们ViewModel的集合。像往常一样,我们正在遍历并显示。这应该工作正常。经过测试。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/612209.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号