【发布时间】: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