【发布时间】:2014-04-27 00:55:01
【问题描述】:
在 Julie Lerman 的关于实体框架的优秀书籍中,她展示了一个简单的函数,可以自动更改实体的 ModifiedDate 列(如果碰巧有)。我在下面添加了它
Friend Sub FixUpModifiedDates()
Dim entries = From ose In Me.ObjectStateManager.GetObjectStateEntries(EntityState.Added Or EntityState.Modified) Where ose.Entity IsNot Nothing
For Each entry In entries
Dim fieldMetaData = entry.CurrentValues.DataRecordInfo.FieldMetadata
Dim modifiedField As FieldMetadata = fieldMetaData.Where(Function(f) f.FieldType.Name = "ModifiedDate").FirstOrDefault()
If modifiedField.FieldType IsNot Nothing Then
Dim fieldTypeName As String = modifiedField.FieldType.TypeUsage.EdmType.Name
If fieldTypeName = PrimitiveTypeKind.DateTime.ToString() Then
entry.CurrentValues.SetDateTime(modifiedField.Ordinal, DateTime.Now)
End If
End If
Next
End Sub
我正在将使用它的旧模型转换为 EF6.x 和 dbContext。此代码原样失败,原因之一是它需要具有原始中没有的 Imports System.Data.Entity。但是,对 ObjectStateManager 的引用是纯 ObjectContext ,我在将其转换为 DbContext 友好代码时遇到了麻烦(尤其是因为似乎越来越少的参考文章或书籍(包括 Julie 自己关于该主题的书)解释 DbContext 以外的任何内容C# 代码)和许多免费提供的代码转换器在 db 和 Object 上下文特定代码方面存在问题。
你们中有人知道如何翻译并解释为什么存在差异吗?
非常感谢
【问题讨论】: