MVC, EF, Code First 相关问题总结

1. 控制表名单复数:

在DbContext类中修改OnModelCreating()为:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
  modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}

2. Entity Framework 内部错误调试:

try
{

  XXDbContext db = new XXDbContext();
  db.EntitySet.Add(user);
  db.SaveChanges();
}
catch (Exception ee)
{
  throw ee.InnerException;
}

3. 建立空MVC项目时,需要引用EntityFramework.dll,然后才能正常使用DbContext。

4. Html.BeginForm两种用法:

  a. @using(Html.BeginForm()){......}

  b. @{Html.BeginForm();} ...... @{Html.EndForm();}

5. EF Power Tool 生成的Model及Mapping,如果要更新就只能重建,直接更新没有效果。

6. 注意:您可能会看到因 Visual Studio 尝试验证该模板所导致的以下错误。由于我们不会在项目中运行这些模板,可以忽略该错误。

   正在编译转换: 找不到类型或命名空间名称“EfTextTemplateHost”(是否缺少 using 指令或程序集引用?)

   转自:http://msdn.microsoft.com/zh-cn/data/jj593170.aspx

7. Html.TextBoxFor 给Input添加Html属性:

  单个属性:<%= Html.TextBoxFor(model => model.ReturnDate, new { size = 20 })%>

  多 个属性:<%= Html.TextBoxFor(model => model.CityFromRoute2, new Dictionary<string, object>() { {"size", 20 }, {"readnoly", "readnoly" } })%>

8. Post方式提交表单时,表单中包含文件的时候Request.Files取不到文件是因为<from>b标签没有添加属性 enctype = "multipart/form-data" 。    

 MVC form: @using (Html.BeginForm("Upload", "Home", FormMethod.Post, new { enctype = "multipart/form-data", name = "Form1", id = "Form1" }))

9. @section用法:配合母版页中的@RenderSection使用。如页面中@section styles{...}中的内容将展示在母版页中的@RenderSection("styles", false)位置上。参数  false意思是不验证页面中是否存在@section style,该参数如果为true的话,当页面中不存在@section styles的时候会报错。

10. 找不到方法:“System.Data.Objects.ObjectContext System.Data.Entity.Infrastructure.IObjectContextAdapter.get_ObjectContext()”

  EntityFramework 5.0升级至6.0出现的问题。由于是自动升级,所以不容易被发现。引发该问题的原因是在EntityFramework6.0中删除了一些类并改变了一些命名空  间。解决办法:删除报错项目中的EntityFramework引用,并重新添加引用。

  参见:http://stackoverflow.com/questions/14106286/ef-6-system-data-objects-objectcontext-error

11. ViewBag对象在HTML页面里无法正确显示符号,@Html.Raw(ViewBag.XXX)。

原文地址:https://www.cnblogs.com/jiajinyi/p/3293915.html