【发布时间】:2016-10-17 16:14:15
【问题描述】:
我正在 MVC 中创建一个数据库驱动的应用程序,我的应用程序是一个“数据字典”,它显示报告以及这些报告中使用了哪些数据库表。我正在为 MVC 使用数据库优先方法。
我的数据库结构如下
*tblReport*
fldReportID
fldReportName
fldReportPurpose
fldOriginalSignOffDate
*tblDBTables*
fldTableID
fldTableName
*tblDBTablesUsed*
fldDBTablesUsedID
fldReportID
fldTableID
tblDBTablesUsed 是多对多链接表 IE 每个报表有多个表,每个表可以在多个报表中使用。
我想在 MVC 中创建一个视图页面,它显示基本报告信息(保存在 tblReport 中)以及有关该报告中使用的表的信息。
我为每个表创建了一个模型如下:
public partial class tblReport
{
public int fldReportID { get; set; }
public string fldReportName { get; set; }
public string fldReportPurpose { get; set; }
public Nullable<System.DateTime> fldOriginalSignOffDate { get; set; }
}
public partial class tblDBTable
{
public int fldTableID { get; set; }
public string fldTableName { get; set; }
}
public partial class tblDBTablesUsed
{
public int fldTablesUsedID { get; set; }
public Nullable<int> fldReportID { get; set; }
public Nullable<int> fldTableID { get; set; }
public virtual tblDBTable tblDBTable { get; set; }
public virtual tblReport tblReport { get; set; }
}
还有我的 Dbcontext 类:
public partial class DataDictionaryEntities : DbContext
{
public virtual DbSet<tblDBTable> tblDBTables { get; set; }
public virtual DbSet<tblDBTablesUsed> tblDBTablesUseds { get; set; }
public virtual DbSet<tblReport> tblReports { get; set; }
}
我创建了一个视图模型来保存我想在视图中显示的两个实体:
public class ReportViewModel
{
public tblReport report = new tblReport();
public IEnumerable<tblDBTable> dbtables;
}
最后,在我的报告控制器中,我创建了详细信息操作方法
public ActionResult Details(int? id)
{
ReportViewModel rvm = new ReportViewModel();
tblReport Report = db.tblReports.Find(id);
//here we have an Ienumerable of the link table which gives us the table ID's used in this report
IEnumerable<tblDBTablesUsed> DBTablesUsed = db.tblDBTablesUseds.Where(x => x.fldReportID == Report.fldReportID);
//how to get the tables!?
//DBTables = ??
rvm.report = Report;
rvm.dbtables = DBTables;
return View(rvm);
}
我正在努力获取相关表 - IEnumerable DBTablesUsed 保存他们的 ID,但我如何从 tblReport 获取这些 IDS 的记录?
【问题讨论】:
标签: c# sql asp.net-mvc database model-view-controller