使用实体框架模型第一种方法的描述字段的查找表

时间:2016-01-27 12:34:14

标签: c# entity-framework enums asp.net-mvc-5 lookup-tables

我目前正在使用EntityFramework6在MVC5中重新开发一个站点,并且正在努力解决数据库结构问题,特别是将lookupFields从一个表转换为另一个表。我们有一份工作表

[u'Justice league', u'Avenger']

和JobState查找表

TABLE [dbo].[Job](
[JobId] [int] IDENTITY(1,1) NOT NULL,
[JobStateId] [int] NOT NULL,

现在我在查看使用Entity Framework生成的JobView时尝试使用查找表中的描述

TABLE [dbo].[JobState](
[JobStateId] [int] NOT NULL,
[Description] [varchar](50) NOT NULL

我创建了一个局部视图并添加到JobState字段

public partial class Job
{
    public int JobId { get; set; }
    public int JobStateId { get; set; }
    public int JobPriorityId { get; set; }
    public string JobType { get; set; }
    public Nullable<System.DateTime> RunAfter { get; set; }
    public int AttemptCount { get; set; }
    public int MaxAttemptCount { get; set; }
    public int RetryDelayMinutes { get; set; }
    public string ContentXml { get; set; }
    public Nullable<int> ContentId { get; set; }
    public System.DateTime Created { get; set; }
    public Nullable<int> SecondaryContentId { get; set; }
    public Nullable<int> ParentId { get; set; }
    public Nullable<bool> SingleChild { get; set; }
}

我正在尝试在视图中使用它

 [MetadataType(typeof(JobMetadata))]
public partial class Job
{
    [ForeignKey("JobState")]
    public virtual JobState JobState { get; set; }
}

然而,这不会产生价值。

最好的方法是什么,用最少的代码来实现这个目标?

我应该从此查找表生成枚举,然后保持它们同步,还是在这些表之间创建关系?我已经研究过使用这个EF to enum package但是它需要迁移脚本和Seed()函数,而这个函数还没有使用Database first方法创建。

我还尝试为JobStates创建部分视图

 @foreach (var item in Model)
{
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.JobId)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.JobState)
        </td>

然后在视图中使用editorFor方法,但无济于事。

有人能引导我朝正确的方向前进吗?

0 个答案:

没有答案