我遇到的情况是,我可能正在使用多个 DbContext,这些 DbContext 可能包含也可能不包含 SomeEntity 的 DbSet。
当然,如果我关闭 SaveChanges 并且该实体不存在,则会出现以下错误:
实体类型 SomeEntity 不是当前模型的一部分
语境。
如何检查模型中是否存在实体或实体集,如果不存在,则如何短路有问题的代码位?
Richard
调用时应立即抛出异常Set<NotMappedEntityType>
所以最简单的方法就是捕获异常并根据需要进行处理。
复杂的解决方案要求您浏览映射元数据并搜索映射的实体类型,该类型必须与 CLR 类型具有相同的名称。您可以在派生上下文类中添加此方法来检查实体类型是否存在:
public bool Exists<TEntity>() where TEntity : class
{
string entityName = typeof(TEntity).Name;
ObjectContext objContext = ((IObjectContextAdapter)this).ObjectContext;
MetadataWorkspace workspace = objContext.MetadataWorkspace;
return workspace.GetItems<EntityType>(DataSpace.CSpace).Any(e => e.Name == entityName);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)