根据实体框架检查数据库中的数据
Posted
技术标签:
【中文标题】根据实体框架检查数据库中的数据【英文标题】:Check data from Database against Entity Framework 【发布时间】:2021-12-26 16:57:31 【问题描述】:我的问题是我的数据库可能包含来自软件先前版本的无效值。对于这些值,我们必须单独决定如何处理它们。
我已经创建了一个相应的实体框架,可以用来访问数据库。在测试系统内部,一切正常,但在客户系统上的第一次测试安装期间,由于数据库中的值无效,程序总是崩溃。
现在的问题是我可以使用实体框架检测数据库中的错误吗?
我想知道哪些记录、哪些列会导致错误。
我不能假设任何键都可以单独获取每个实体。所以我的第一个想法是从DbContext
中为每个实体(QueryingEnumerable
)检查每个存储库(DbSet
)。但是,DbSet
无法真正访问单个实体,只能通过查询直到出现第一个错误。
另外,我仍然不知道哪些列导致了错误,因为异常不包含任何信息。
还有什么我可以尝试的建议吗?
【问题讨论】:
请附上显示的错误信息,谢谢 【参考方案1】:如果您有 dbSet 持有的给定实体的 ID 或键,那么您可以获得单个实体。
// In repository or somewhere else, where you have access to this particular DbSet
DbSetOfSomeEntity.FirstOrDefault(x => x.Id == /* Some id number, guid etc */)
在try-catch
块中访问它们,读取异常并决定下一步做什么。
【讨论】:
不幸的是,我也没有关于实体数据的任何信息。通过主键单独查询所有实体是不可能的。 然后尝试DbSetOfSomeEntity.OrderBy(p=>p.Id).Skip(0).Take(1)
并遍历跳过数量 - 这将为您提供一个固定顺序的实体 - 假设,由于您使用 EF,那么您有具有已知字段的实体类,因为你想使用 dbSet。以上是关于根据实体框架检查数据库中的数据的主要内容,如果未能解决你的问题,请参考以下文章