我正在学习 MVC,我了解如何创建单个模型类,然后创建单个上下文类,然后基于模型/上下文组合创建控制器和视图,并使用代码将模型提交到数据库-第一的。
现在我想将第二个模型(以及表格)加入到组合中。我最初尝试以相同的方式创建第二个上下文类,然后是第二个模型类,然后是控制器和视图。结果,我发现我一次只能将一个模型提交到数据库。每当我在一个模型上启用自动迁移,然后Update-Database
在包管理器中运行命令时,另一个表就会从我的数据库中消失,并且另一个模型的添加/删除/编辑/查看功能也会中断。
当然,您必须能够使用此技术来管理多个表吗?我的问题是,如果我有两个模型类,如下所示:
[Table("TableOne")]
public class ModelOne
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public string Foo { get; set; }
}
[Table("TableTwo")]
public class ModelTwo
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public string Bar { get; set; }
}
如果我想同时使用两者,我的 Context 类需要是什么样的?我的想法是试试这个:
public class FooBar : DbContext
{
public FooBar()
: base("DefaultConnection")
{
}
public DbSet<ModelOne> TableOne { get; set; }
public DbSet<ModelTwo> TableTwo { get; set; }
}
然后在添加控制器向导中,我可以选择具有读/写操作和视图的 MVC 控制器,使用模板下拉列表中的实体框架、模型类下拉列表中的ModelOne和数据上下文类下拉列表中的FooBar-第一个模型的下拉列表,以及第二个模型的模型类下拉列表中的ModelTwo相同的选项,一切都会按预期工作,但是每当我尝试基于模型创建第一个控制器时,我都会得到这个错误:
生成 FooBar 时出错。尝试重建您的项目。
我已经尝试重建我的项目,但我得到了同样的错误,所以很明显我做错了更大的事情。我做错了什么,我需要如何修改我的 FooBar 上下文类以使事情正常工作,假设它是我的 FooBar 上下文类是错误的?