【问题标题】:Navigation Property not lazy loaded EF6 Code First导航属性未延迟加载 EF6 代码优先
【发布时间】:2018-04-03 03:26:16
【问题描述】:

我已经搜索了网络和堆栈溢出来解决我的问题,但我没有运气。

基本上,我有一个模型,它具有相同对象和其他对象的 2 个引用。当我在模型中插入一条记录时,没有加载属性,因此我尝试了 Context.Attach 函数,但没有成功。我也尝试查询现有记录,但对象仍然没有附加

这是我的模型

  [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    [Key]
    public Guid TripID { get; set; }
    [Required]
    [Range(1, 999999, ErrorMessage = "Total Distance can only be a positive number non-zero")]
    public double TotalDistance { get; set; }

    [Required]
    public double AmountDue { get; set; }
    [Required]
    public TripPaymentType PaymentType { get; set; }
    [Required]
    public TripStatus CurrentStatus { get; set; }
    [ForeignKey("TripTypeId")]
    public TripType TripType { get; set; }
    [Required]
    public Guid TripTypeId { get; set; }
    [Required]
    public DateTime TransactionDate { get; set; }
    [Required]
    public Guid CustomerID { get; set; }
    [ForeignKey("CustomerID")]
    public UserInfo Customer { get; set; }
    public Guid? DriverID { get; set; }
    [ForeignKey("DriverID")]
    public UserInfo Driver { get; set; }

为单个对象多引用配置

             modelBuilder.Entity<TripHistory>()
            .HasRequired(th => th.Customer)
            .WithMany()
            .WillCascadeOnDelete(false);
        modelBuilder.Entity<TripHistory>()
            .HasOptional(th => th.Driver)
            .WithMany()
            .WillCascadeOnDelete(false);

任何帮助将不胜感激

【问题讨论】:

  • 当你尝试插入一个新的元组时,为什么会加载相关条目? Load() 方法可能是您正在寻找的方法,但在 SaveChanges() 之后,您可能会期望一个分离的实体状态。
  • 您好,是因为我保存记录后还有其他交易。我还编辑了问题以指定我确实尝试查询现有记录,但仍然不会加载导航属性
  • 如果您在保存后没有处理上下文,只是使用相同的上下文进行检索,您可能会从 dbcontext 缓存中获取刚刚插入的对象。

标签: c# asp.net entity-framework asp.net-web-api


【解决方案1】:

供日后参考,

出于某种原因,即使使用 .Include() 方法启用了延迟加载,我也不得不强制加载对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-07
    • 1970-01-01
    相关资源
    最近更新 更多