首先发布在这里。我对编程很陌生,而且我是MVC和实体框架的新手。我有一个问题涉及很多细节和很多我试过的尝试的代码,但在我把这一切都放下之前,我想我会问一个问题,看看我是不是从正确的范例中解决问题。
我正在开展一个项目,我的团队正在用一个MVC网络应用程序替换基于Access的桌面应用程序。我们有一个与多个其他表具有一对多关系的单个父表,并且我们已将该模式作为mdf文件提取到我们的项目中,并且到目前为止,它首先尝试执行此事物数据库。 / p>
主表的主键是,例如,CustomerID。所有子表都将CustomerID作为外键。该应用程序需要做的是显示来自所有不同表中的选定单元格的数据,以用于单个CustomerID。
我试图攻击它的方式是我创建了一个只包含我需要显示的列的模型类,然后在控制器中我使用一系列左外连接查询数据库在CustomerID上,只选择我想要的列,并填充我在select子句中创建的自定义模型的单个实例。然后我将该模型传递给View。
基本问题,我知道,但这是最好的一般过程吗?或者我是否需要以不同的方式思考这个问题?
答案 0 :(得分:0)
我不确定这是否是最好的方法,但我最终创建了一个模型,该模型由我需要从中绘制数据的每个表的列表组成。
所以 公共类MasterModel { 公开名单{get;组; } 公共列表电子邮件{get;组; } 公共列表电话{get;组; } }
然后
public ActionResult Index(int id)
{
MasterModel masterModel = new MasterModel();
masterModel.Names = *query NamesTable where Names.id == id*
masterModel.Emails = *query EmailsTable where Emails.id == id*
masterModel.Phones = *query PhonesTable where Phones.id == id*
return View(masterModel)
}
因此将masterModel传递给index.cshtml,index.cshtml为_NamesPartial.cshtml,_EmailsPartial.cshtml和_Phones.cshtml提取部分视图。每个部分都有一个IList类型的模型。
那么每个部分都有像
这样的代码foreach (var item in Model)
{
@Html.TextBox("FirstProp", item.FirstProp)
@Html.TextBox("SecondProp", item.SecondProp)
}
这样我的所有数据都显示在一个页面上。
这个问题已经“解决”了。
但它确实让我想到如何使用相同的方法/模型只使用一个控制器和模型来写入每个数据库中的新问题。