我的上下文中有以下实体:
public class Asset
{
public int AssetId { get; set; }
public Registration Registration { get; set; }
[Required]
[Display(Name = "Asset Type")]
public AssetType AssetType { get; set; }
[Required]
[Range(Constants.SerialNumberStart, Constants.SerialNumberEnd)]
[DisplayFormat(DataFormatString = "{0:d8}")]
public int SerialNumber { get; set; }
[Required]
[Range(Constants.EquipNumberStart, Constants.EquipNumberEnd)]
[DisplayFormat(DataFormatString = "{0:d12}")]
public long EquipNumber { get; set; }
[Required]
[Display(Name = "Profile")]
[Range(Constants.ProfileStart, Constants.ProfileEnd)]
[DisplayFormat(DataFormatString = "{0:d2}")]
public int Profile { get; set; }
}
public class AssetType
{
public int AssetTypeId { get; set; }
public List<Asset> Asset { get; set; }
[Required]
[Display(Name = "Asset Type")]
[StringLength(40)]
public string AssetTypeFullName { get; set; }
[Required]
[Display(Name = "Asset Alias")]
[StringLength(8)]
public string AssetTypeShortName { get; set; }
}
我已经播种了我的数据库,一切看起来都很好,AssetType外键正确地显示了我的AssetType表数据的索引。
但是当我尝试在下面的代码中为View获取数据时,AssetType键/数据为空。
public ActionResult Index()
{
Logger.Debug("Index");
RegistrationServerContext dbNotLazy = new RegistrationServerContext();
return View(dbNotLazy.Assets.ToList());
}
当我设置断点并检查我的dbNotLazy.Asset数据时,AssetType外键为null。
我认为这可能与Lazy Loading有关,但正如您所看到的,我在View调用之前创建了一个新的上下文。我可能做错了什么?
答案 0 :(得分:1)
您可能需要使用Include - 更改
return View(dbNotLazy.Assets.ToList());
到
return View(dbNotLazy.Assets.Include("AssetType").ToList());
延迟加载似乎并不总是立即起作用。