3

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

所以我的问题是:

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

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

谢谢大家!

4

2 回答 2

5

你说 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 视图。例如,参见NuGet 上的 MVC 脚手架

于 2012-09-14T20:24:36.743 回答
1

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

当然,如果您来自记忆 ADO.NET 数据集/数据表/数据读取器等的背景。那么请确保您有带有“固定”操作的项目,您可以移植和修改它,但它确实只是旧的并且花费了您更多的时间在长跑。

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

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

于 2012-09-14T23:28:35.683 回答