如何:简单地将SQL Server数据库读取到MVC 4视图?

时间:2012-09-14 20:20:31

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

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

所以我的问题是:

  1. 我应该只是将sqlconn和所有内容都破解到我希望数据打印出来的视图中吗?
  2. 或者我应该在该视图的控制器中添加sql吗?
  3. 创建一个模型并以某种方式将该数据恢复到视图中?
  4. 我知道第3步是'正确'的方法,但我正在寻找简单快捷的方法。 :)

    谢谢大家!

2 个答案:

答案 0 :(得分:5)

你说EF太过分了,但这是最简单的方法。也许使用Linq to SQL,因为它更轻巧。这就是它的全部内容:

  1. 生成EF / L2S实体类
  2. 在控制器中实例化数据库上下文,并获取所有记录
  3. 将IEnumerable记录返回到视图
  4. 在视图中,使用@Html.DisplayForModel()
  5. 这是一个简单的例子。请注意,返回数据库实体类被认为是不好的做法,您应该首先将它们映射/自动化为View Model类型。

    家庭控制器

    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 :(得分:1)

一旦你习惯了强迫自己使用Entity Framework来处理你的“小”应用程序,那么你才能真正理解这是最简单的方法。

当然,如果您来自记忆的ADO.NET数据集/数据表/数据集等的背景,那么请确保您拥有可以移植和修改的“预制”操作的项目,但它确实只是旧的并且花费更多从长远来看。

  1. 使用EF
  2. 在解决方案中使用多个项目
  3. 如果可以,请使用存储库模式,由于您将发现
  4. 的原因而获得红利
  5. 让你的控制器“瘦”
  6. 不要使用“ViewModel”来使用/执行它。
  7. 拥有View和Controller的SOC很关键,但不需要使用Models文件夹,如果你愿意,你可以不用它来连接,只需注意你的“模型”在哪里并遵守SOLID原则等等。