0

我的上下文中有以下实体:

   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 表数据的索引。

但是当我尝试在下面的代码中为视图准备好数据时,AssetType 键/数据为空。

    public ActionResult Index()
    {
        Logger.Debug("Index");
        RegistrationServerContext dbNotLazy = new RegistrationServerContext();
        return View(dbNotLazy.Assets.ToList());
    }

当我设置断点并检查我的 dbNotLazy.Asset 数据时,AssetType 外键为空。

我认为这可能与延迟加载有关,但如您所见,我在 View 调用之前创建了一个新上下文。我可能做错了什么?

4

1 回答 1

1

您可能需要使用包含- 更改

return View(dbNotLazy.Assets.ToList()); 

return View(dbNotLazy.Assets.Include("AssetType").ToList());

延迟加载似乎并不总是立即起作用。

于 2013-10-10T23:14:41.480 回答