我不确定我是否正确地表达了这个问题。在.NET 4.5.1和Entity FrameWork 6.1.3上使用MVC 5。我从一个Oracle数据库开始。在Visual Studio中,我基于名为Missions的表在项目开始时构建了模型,视图和控件。任务有几个字段,分别是用户ID字段(添加者,修改者等)。这些ID列在名为Crew的表中,同时包含用户名和其他信息。我想在Mission的所有视图中显示用户名而不是ID。我是否手动创建一个指向Crew表的新模型,或者有没有办法让VS为我创建它,就像我在项目开始时能够做到的那样?如果我在Crew表上不需要任何CRUD操作,我甚至需要这样做吗?如何使用Modified By ID加入Crew ID?感谢。
目前我的视图看起来像这样
@Html.DisplayFor(modelItem => item.MODIFIED_BY)
我想要这样的东西
@Html.DisplayFor(modelItem => item.MODIFIED_BY.Full_Name)
更新:这是我最终做的事情。不确定这是否完全是倒退的做事方式,但它对我有用。我开始将新的查找字段添加到我的模型中,如下所示:
[StringLength(2000)]
[DisplayName("Modified By")]
[NotMapped]
public string MODIFIED_BY_FULL_NAME { get; set; }
同样在模型中,我像这样更新了MODIFY_BY属性的代码
private decimal? modified_by;
[DisplayName("Modified By")]
public decimal? MODIFIED_BY
{
get
{
return modified_by;
}
set
{
modified_by = value;
if (value != null)
{
Mission db = new Mission();
var name = db.CREW.First(n => n.CREW_ID == value);
if (name != null)
{
MODIFIED_BY_FULL_NAME = name.CREW_FULL_NAME;
}
}
}
}
因此,每当设置了MODIFIED_BY属性时,我都会进行查找并填充MODIFIED_BY_FULL_NAME属性。然后在我的视图中,我只使用新属性以此
显示全名@Html.DisplayFor(modelItem => item.MODIFIED_BY_FULL_NAME)
这里的一个重大缺点就是我需要做的所有工作需要花费很长时间。此外,由于这些新属性未映射,我无法使用OrderBy甚至搜索它们。我必须先将值转换回ID值。这就是为什么我在想我做错了什么。