【发布时间】:2021-03-31 12:11:36
【问题描述】:
如果我只是这样做:
var medical = ctx.Medicals.FirstOrDefault(p => p.ID == medicalViewModel.ID);
var sizeClinics = medical.Clinics.Count;
金额为(例如)10 个(即我有 10 个诊所用于该医疗)。 现在,如果我这样做:
var medical = mapper.Map<MedicalViewModel, Medicals>(medicalViewModel);
ctx.Entry(medical).State = medical.ID == 0 ? EntityState.Added : EntityState.Modified;
ctx.SaveChanges();
medical = ctx.Medicals.FirstOrDefault(p => p.ID == medicalViewModel.ID);
var sizeClinics = medical.Clinics.Count;
大小为0。为什么? SaveChanges 后似乎删除了关系?
这是 Medicals 对象:
public partial class Medicals
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public Medicals()
{
this.Activities = new HashSet<Activities>();
this.MedicalsRefunds = new HashSet<MedicalsRefunds>();
this.Clinics = new HashSet<Clinics>();
}
public int ID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public string Phone { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<Activities> Activities { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<MedicalsRefunds> MedicalsRefunds { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<Clinics> Clinics { get; set; }
}
我注意到了:如果我第一次使用 QuickWatch 分析医疗对象(没有 SaveChanges 部分),它是 {System.Data.Entity.DynamicProxies.Medicals_650D310387E78A83885649345ED0FB2870EC304BF647B59321DFA0E4FBC78047}。
相反,如果我执行 SaveChanges 然后检索该医疗,它是 {MyNamespace.Models.Medicals}。
会是什么?
【问题讨论】:
-
请向我们展示您的医疗实体代码。
-
您的查询尝试返回单个对象,而不是关系。您的代码要么插入一个新实体,在这种情况下
ID可能会更改,要么您更新一个已经存在的实体。我怀疑这是第一种情况 -ID是数据库生成的,可能是 IDENTITY,medicalViewModel.ID是0 -
@PWND 添加了 Medicals 类
-
@Panagiotis Kanavos 我正在(在示例中)使用现有项目,因此在这两种情况下, medicalViewModel.ID (例如)都是 14。
-
分离的对象是否有任何诊所?
标签: c# .net entity-framework relationship