C# ASP MVC包含到视图外键类中,这不是必需的

C# ASP MVC包含到视图外键类中,这不是必需的,c#,asp.net,asp.net-mvc,entity-framework,foreign-keys,C#,Asp.net,Asp.net Mvc,Entity Framework,Foreign Keys,我是MVC ASP的新手,所以为了了解更多信息,我正在自己制作应用程序。当然,它与EF和数据库一起工作。然而,奇怪的是,当我试图列出表中具有可选(null)外键(零对多关系)的所有行时,会发生这种情况。有一个类“Attribute”(基于表),它的列是表“unit”的外键,但数据库中的该列是可选的(null)。类的定义如下(简化版本): 另一个外键数据类型是必需的,虽然这是唯一列出此表中的行的FK索引视图,但它正确地显示了数据库中的所有行。这是索引控制器: public ActionRes

我是MVC ASP的新手,所以为了了解更多信息,我正在自己制作应用程序。当然,它与EF和数据库一起工作。然而,奇怪的是,当我试图列出表中具有可选(null)外键(零对多关系)的所有行时,会发生这种情况。有一个类“Attribute”(基于表),它的列是表“unit”的外键,但数据库中的该列是可选的(null)。类的定义如下(简化版本):

另一个外键数据类型是必需的,虽然这是唯一列出此表中的行的FK索引视图,但它正确地显示了数据库中的所有行。这是索引控制器:

   public ActionResult Index()
    {
        PIMContext context = new PIMContext();
        IQueryable<PIMObjects.Attribute> attributes = context.attributes.Include(a => a.DataType);
        return View(attributes.ToList());
    }
它只显示具有此字段值的行。其他行未显示。 目前,在数据库中,表中有两个属性行,一个是uom,另一个是uom列中的null。它仅显示具有该值的行

我错过了什么? 顺便说一句,这是应该在index.cshtml中显示此字段的部分

    <td>
        @if (item.Uom != null)
        { 
             @Html.DisplayFor(modelItem => item.Uom.unitname)
        }
    </td>

@如果(item.Uom!=null)
{ 
@DisplayFor(modelItem=>item.Uom.unitname)
}

我现在无法自己尝试,但我想说的是,您需要将uomid的类型从int更改为可为null的int(“int?”)

我现在无法亲自尝试,但我想说,您需要将uomid的类型从int更改为可为null的int(“int?”)

attributes = attributes.Include(a => a.Uom);
    <td>
        @if (item.Uom != null)
        { 
             @Html.DisplayFor(modelItem => item.Uom.unitname)
        }
    </td>