我正在使用MySQL .net连接器6.4.4.0和Entity Frame工作4.1,并尝试创建最基本的代码优先实现。
public class myDB: DbContext { public DbSet Votes { get; set; } } 我的模特
public class Vote { public Guid Id { get; set; } public int Value { get; set; } } 我的家庭控制器
public class HomeController : Controller { myDB_db = new myDB(); public ActionResult Index() { var model = _db.Votes; return View(model); } } 我的强类型视图(使用List脚手架)
@model IEnumerable<Namespace.Models.Vote>
@{ ViewBag.Title = "Index"; }
@Html.ActionLink("Create New", "Create")
@Html.DisplayNameFor(model => model.Value) |
---|
但是,它抛出这一行:
@foreach(模型中的var项)
有这个特例:
“表'mydb.vote'不存在”
编辑:澄清一下,我实际上是想要表的复数形式,并且似乎可以正确地创建表。我希望发现单数/复数差异的原因。microsoft / Plural Sight / scott gu的教程和视频都没有使用mysql处理的,所以我不得不想象.netconnector可能是罪魁祸首。我也想避免使用[Table(“ Votes”)]属性。基本上,我希望有尽可能多的“开箱即用”的解决方案。
edit2(一些更相关的代码):当我删除此...表无法一起创建。但是该视图引发了一个异常,即寻找“投票”而不是“投票”。在global.asax中
protected void Application_Start() { Database.SetInitializer(new DropCreateDatabaseAlways ());
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
public class myDBInitializer : DropCreateDatabaseAlways { protected override void Seed(myDBcontext) { base.Seed(context); } }
因此,我放弃了尝试以自己认为应该做的方式来做,并一起消除了多元化。我不确定,但我认为问题与EF的mysql .net连接器有关。这是我所做的。
首先,我的ApplicationStart方法中存在一个错误:
//WRONG //Database.SetInitializer(new DropCreateDatabaseAlways ()); Database.SetInitializer(new myDBInitializer()); 其次,我不再调用原始代码中未列出的OnModelCreating基本实现,因为我仅按照jgauffin的建议实现了它:
protected override void OnModelCreating(DbModelBuilder modelBuilder) { //DONT DO THIS ANYMORE //base.OnModelCreating(modelBuilder); //modelBuilder.Entity ().ToTable("Votes") modelBuilder.Conventions.Remove (); } 第三,我在一些帖子中读到,MySQL .net Connector不允许EF实际创建数据库,因此我最初创建了空白数据库。连接器6.4.4+似乎不再是这种情况,并且只要您的连接字符串的用户具有创建新数据库的能力,如果最初不存在数据库,它的性能就会更好。
一次,我完成了以上所有操作,它似乎起作用了。所以现在我至少可以前进了。希望我们将来能找出造成复数/单数差异的原因。
感谢大家的时间和精力。来源:stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。