Context.Entry(). getdatabasevalvalues()方法不复制实体的子实体

本文关键字:实体 复制 方法 Entry getdatabasevalvalues Context | 更新日期: 2023-09-27 18:14:51

我正在做一个实体框架的WPF项目。我使用Context.Entry().GetDatabaseValues()方法获取要更新的对象的原始对象值。getdatabasevalues()方法返回内部对象的原始值和空值

如下:

public partial class LabPayments 
{
   public partial class LabAccount
   {
    public long ID { get; set; }
    public Nullable<long> MaterialID { get; set; }
    public Nullable<long> LabID { get; set; }
    public Nullable<double> Quantity { get; set; }
    public Nullable<System.DateTime> MaterialDate { get; set; }
    public Nullable<long> LabMaterialPriceID { get; set; }
    public Nullable<decimal> Price { get; set; }
    public virtual Lab Lab { get; set; }
    public virtual LabMaterial LabMaterial { get; set; }
    public virtual LabMaterialPrice LabMaterialPrice { get; set; }
}

返回的虚对象值为空!!

Context.Entry(). getdatabasevalvalues()方法不复制实体的子实体

From MSDN:

查询数据库中当前存在的被跟踪实体值的副本。
<一口><子> https://msdn.microsoft.com/en-us/library/system.data.entity.infrastructure.dbentityentry.getdatabasevalues (v = vs.113) . aspx

using (var context = new BloggingContext()) 
{ 
    var blog = context.Blogs.Find(1); 
    var clonedBlog = context.Entry(blog).GetDatabaseValues().ToObject(); 
}

注意,返回的对象不是实体,也没有被上下文跟踪。返回的对象也没有与其他对象设置任何关系。
https://msdn.microsoft.com/en-us/data/jj592677.aspx <一口><子>


GetDatabaseValues只获得被跟踪实体的值,而不是任何导航属性或集合属性,它们只是关系/关联的表示。这些虚拟属性是对相关实体对象的引用,不会随GetDatabaseValues返回。