为什么模型类似于MVC

时间:2017-01-23 13:59:26

标签: asp.net-mvc entity-framework model-view-controller

我是MVC的新手,我完全陷入了模型验证异常。

我想使用Entity框架从数据库表中检索数据。我使用visual Studio 2012和Sqlexpress作为数据库服务器。这是我到目前为止所做的

  • 创建表示表的移动模型类(“移动设备”。
  • 创建继承DbContext的MobileContext类。
  • 创建MobileController类,返回包含Mobiles列表的视图。
  • 设计视图。
  • 在web.config文件中设置连接字符串。
  • 现在我总是在MobileContorller类中得到模型验证异常。即使我为表和模型提供了相同的列名。我无法弄清楚究竟是什么引起了这个异常。 表移动设备是

    Model int NotNull 输入nchar(10)NotNull 成本nchar(10)NotNull

    为了方便我已经考虑了角色的成本。 移动模型类

    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations.Schema;
    using System.Linq;
    using System.Web;
    namespace Mvcpractice4.Models
    {
        [Table("Mobiles")]
        public class Mobile
        {   public int Model { get; set; }
            public string Type { get; set; }
            public String Cost { get; set; }
        }
    }
    

    MobilesContorller

        namespace Mvcpractice4.Controllers
    {
        public class MobilesController : Controller
        {       
    
            public ActionResult Details(int id)
            {
                MobilesContext pc = new MobilesContext();
    
                List<Mobile> plist = pc.productsproperty.ToList();
    
                return View(plist);
            }
    
        }
    }
    

    MobilesContext类

    namespace Mvcpractice4.Models
    {
        public class MobilesContext:DbContext
        {
            public DbSet<Mobile> productsproperty { get; set; }
        }
    }
    

    详细信息视图

    @model IEnumerable< Mvcpractice4.Models.Mobile>
    @using Mvcpractice4.Models;
    
    @{
        ViewBag.Title = "Details";
    }
    
    <h2>Details</h2>
    <ul>@foreach(Mobile obj in @Model)
        {
        <li>
            @obj.Model
        </li>
        <li>
            @obj.Type
        </li>
        <li>
            @obj.Cost
        </li>
    }
    </ul>
    

    Web.Cofig文件中的连接字符串为

    <connectionStrings>
        <add name="MobilesContext" connectionString="server=.\sqlexpress;database=Gadgets;integrated Security=true" providerName="System.Data.SqlClient"/>
      </connectionStrings>
    

    1 个答案:

    答案 0 :(得分:0)

    根据对similar post的回答,我猜想实体框架需要一个密钥 - 表中数据库中的主键。

    rmdir /s /q "%userprofile%\Documents\IISExpress"