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)。