我正在使用Entity Framework开发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; }
}
返回的虚拟对象值为null !!
答案 0 :(得分:1)
来自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
一起返回。