Mik*_*tes 21 entity-framework entity-framework-4
我希望能够判断实体框架上下文中是否存在任何未保存的数据.我已经弄清楚如何使用ObjectStateManager来检查现有实体的状态,但我有两个问题.
在我的msdn搜索中,我一直无法找到答案,所以我希望有人能在这里找到答案.
提前致谢.
Cra*_*ntz 15
var addedStateEntries = Context
.ObjectStateManager
.GetObjectStateEntries(EntityState.Added);
Run Code Online (Sandbox Code Playgroud)
通过扩展方法(对于每个ObjectContext):
internal static class ObjectContextExtensions
{
public static bool IsContextDirty(this ObjectContext objectContext)
{
return objectContext
.ObjectStateManager
.GetObjectStateEntries(
EntityState.Added |
EntityState.Deleted |
EntityState.Modified).Any();
}
}
Run Code Online (Sandbox Code Playgroud)
或通过部分方法(仅适用于您的ObjectContext):
partial class MyModel
{
public bool IsContextDirty()
{
return ObjectStateManager
.GetObjectStateEntries(
EntityState.Added |
EntityState.Deleted |
EntityState.Modified).Any();
}
}
Run Code Online (Sandbox Code Playgroud)
获取可重用的单个方法/属性的简单方法是,您可以通过创建分部类并添加如下属性来向ObjectContext添加新方法:
public partial class MyEntityContext
{
public bool IsContextDirty
{
get
{
var items = ObjectStateManager.GetObjectStateEntries(EntityState.Added);
if(items.Any())
return true;
items = ObjectStateManager.GetObjectStateEntries(EntityState.Deleted);
if (items.Any())
return true;
items = ObjectStateManager.GetObjectStateEntries(EntityState.Modified);
if(items.Any())
return true;
return false;
}
}
}
Run Code Online (Sandbox Code Playgroud)
根据您的查找方式,您可以公开其他属性,以了解是否只删除或修改.这种方法可以简化,但我希望明确你需要做什么.
归档时间: |
|
查看次数: |
12331 次 |
最近记录: |