【发布时间】:2019-01-18 05:02:13
【问题描述】:
您好,我有一个名为 Property 的类:
它有以下子实体:-
Public class Property
{
public virtual ICollection<PropertyUrl> Property_URLs { get; set; }
public virtual ICollection<BrochureData> Property_Brochures { get; set; }
public virtual ICollection<ImageSortOrder> Property_ImageSortOrders { get; set; }
}
当我尝试更新属性以及子实体时,我看到为子实体创建了新记录,而不是更新了现有记录。例如,我在要更新的属性中发送 ImageSortOrder:-
//Property Image
ImageSortOrder imageSortOrder = new ImageSortOrder();
imageSortOrder.FileName = "Sai Test Image.jpg";
imageSortOrder.SortOrder = 2; ;
imageSortOrder.Image_Cloudinary_PublicId = "Test_1234";
imageSortOrder.Image_Cloudinary_Url = "www.jll.com";
imageSortOrder.MimeType = "jpg";
imageSortOrder.IsActive = true;
imageSortOrder.ModifiedOn = DateTime.Now;
imageSortOrder.SortOrder = 1;
imageSortOrder.ImageSortOrderId = 862;
p.Property_ImageSortOrders.Add(imageSortOrder);
如您所见,我正在尝试更新 ID 为 862 的子实体。相反,它会创建一个 ID 为 863 的新记录。
我的理解是,如果子实体已经存在,它应该更新它们。相反,它似乎在添加新记录。
谁能告诉我发生了什么以及如何解决这个问题。
【问题讨论】:
-
当您将 ID 分配给您的对象时,如果您确定知道它存在。您可以通过调用
context.Entry(existingBlog).State = EntityState.Modified;将该对象添加到 EF,这样 EF 会发现这是一个现有实体,需要对其进行更新。
标签: c# entity-framework