【问题标题】:Howto: simply read SQL Server database to MVC 4 view?如何:简单地将 SQL Server 数据库读取到 MVC 4 视图?
【发布时间】:2012-09-14 20:20:30
【问题描述】:

我对 MVC 比较陌生。我试图只在页面上显示远程 SQL Server 表的内容。它是只读的,我在网上找到的几乎所有东西都在使用实体框架或类似的东西,这对我所追求的东西来说太过分了。我只需要将表中的所有行打印到视图中。

所以我的问题是:

  1. 我是否应该将 sqlconn 和所有内容破解到我希望将数据打印到的视图中?
  2. 或者我应该在该视图的控制器中添加 sql 吗?
  3. 创建一个模型并以某种方式将该数据返回到视图中?

我知道第 3 步是“正确”的方法,但我正在寻找简单快捷的方法。 :)

谢谢大家!

【问题讨论】:

  • 嗯,它 MVC - 模型-视图-控制器 - 所以拥有一个包含(并可能获取) 你的数据。您使用什么技术来实现这一点完全取决于您 - EF 或直接“原始” T-SQL 和 ADO.NET - 任您选择....

标签: asp.net-mvc razor asp.net-mvc-4 asp.net-4.5


【解决方案1】:

你说 EF 有点矫枉过正,但这是最简单的方法。也许使用 Linq to SQL,因为它更轻量级。这就是它的全部内容:

  1. 生成 EF/L2S 实体类
  2. 在控制器中实例化数据库上下文,并获取所有记录
  3. 将 IEnumerable 记录返回给视图
  4. 在视图中,使用@Html.DisplayForModel()

这是一个简单的例子。请注意,返回数据库实体类被认为是不好的做法,您应该首先将它们映射/自动映射到视图模型类型类。

家庭控制器

public ActionResult Index()
{
    MyEntityModel[] items = MyDatabaseContext.GetAllRows();
    return View(items);
}

主页/索引视图

@model IEnumerable<MyEntityModel>

@foreach (MyEntityModel item in Model)
{
    @Html.DisplayFor(m => item)
}

没有 EF / L2S 几乎一样简单,但您必须为数据库记录创建自己的实体/包装类并手动填充它们。

还有用于 MVC 的脚手架项目将生成存储库和控制器类,以及 Razor 视图。参见例如MVC Scaffolding on NuGet

【讨论】:

  • 好的,听起来不错。根据您的 1-4,知道任何具有更详细说明的好资源吗?我发誓我发现的一切都是 CRUD ......当我想要/需要的只是 R. ;)
  • @cardiac7 我引用的 MVC 脚手架的东西有一个很好的演练:blog.stevensanderson.com/2011/01/13/…
  • 好酷!我已经按照您上面的建议添加了控制器和视图。与 MyEntityModel 和 MyDatabaseContent 相关的 Controller 中还需要定义什么。
  • @cardiac7 定义 MyEntityModel 以包装数据库行。编写 MyDatabaseContext.GetAllRows 以便它返回数据库中的行(使用 ADO.Net 或您选择的 ORM)。
  • toptensoftware.com/petapoco 是我最喜欢的数据访问 CRUD 框架
【解决方案2】:

一旦你习惯了强迫自己使用实体框架,即使是你的“小”应用程序,只有那时你才会真正理解这是最简单的方法。

当然,如果您来自记忆 ADO.NET 数据集/数据表/数据读取器等的背景。那么请确保您的项目具有“固定”操作,可以移植和修改,但它确实只是旧的并且成本更高从长远来看。

  1. 使用 EF
  2. 在一个解决方案中使用多个项目
  3. 如果可以,请使用存储库模式,因为您会发现原因,它会带来红利
  4. 让你的控制器“瘦”
  5. 不要仅仅为了使用/执行它而使用“ViewModel”。

有 View 和 Controller 的 SOC 很关键,但是 Models 文件夹不需要使用,你可以不用它来连接东西,只要注意你的“模型”在哪里,遵守 SOLID 原则等等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-09
    • 1970-01-01
    • 1970-01-01
    • 2011-05-02
    • 2014-05-09
    • 1970-01-01
    • 2023-04-05
    • 2015-05-20
    相关资源
    最近更新 更多