Я новичок в MVC ASP, поэтому, чтобы узнать больше, я подаю заявку самостоятельно.Он работает с EF и базой данных.Странная вещь, однако, происходит, когда я пытаюсь перечислить все строки из таблицы, которая имеет необязательный (нулевой) внешний ключ (отношение ноль-ко-многим).Существует класс «Атрибут» (на основе таблицы), в котором есть столбец, который является внешним ключом таблицы «единица измерения», но этот столбец в базе данных является необязательным (нулевым).Класс определяется следующим образом (сокращенная версия):
public class Attribute
{
public int id { get; set; }
public string shortname { get; set; }
public string longname { get; set; }
[Display(Name = "DataType")]
[Required]
public int datatypeid { get; set; }
[ForeignKey("datatypeid")]
public virtual PIMObjects.Helpers.DataType DataType { get; set; }
[Display(Name = "Uom")]
public int uomid { get; set; }
[ForeignKey("uomid")]
public virtual Uom Uom { get; set; }
}
Другой внешний ключ DataType является обязательным, и хотя это было единственное представление индекса FK, в котором перечисленные строки из этой таблицы правильно отображали все строки из базы данных.Это был контроллер индекса:
public ActionResult Index()
{
PIMContext context = new PIMContext();
IQueryable<PIMObjects.Attribute> attributes = context.attributes.Include(a => a.DataType);
return View(attributes.ToList());
}
Когда я добавил необязательный внешний ключ UOM (единицы) и добавил его в индекс контроллера:
attributes = attributes.Include(a => a.Uom);
он просто показывает строки, которые имеют значение дляэто поле уомид.Другие строки не показаны.На данный момент в базе данных есть две строки атрибутов в таблице, одна из которых имеет значение uom, а другая - пустую в столбце uom.Он показывает только строку, которая имеет значение.
Что мне здесь не хватает?Кстати, эта часть должна показывать это поле в index.cshtml
<td>
@if (item.Uom != null)
{
@Html.DisplayFor(modelItem => item.Uom.unitname)
}
</td>