.net - 对象上下文.翻译: avoiding column-mapping mistakes

标签 .net entity-framework

我已开始将旧的 ADO.NET 代码移植到 Linq to Entities。一个特别有用的函数是 ObjectContext.Translate及其同伴ObjectContext.ExecuteStoreQuery它允许您使用任意 SQL 并将它们解包成普通的旧数据对象。

但是,列映射中很容易出错:拼写错误的列名或不同的大小写会导致 .NET 属性不再与预期的 SQL 列匹配。检测数据库模式何时发生变化特别棘手。当 .NET 属性不对应于 sql 列时,不会引发异常 - 相反,Linq toEntity 只是 sets the property to the default value (null0 等)。此行为偶尔可能有用,允许类型包含额外的属性,但它也非常适合隐藏错误,特别是当 null 或默认值是该列的有效值时。

有没有办法改变这种行为,或者至少检测它何时发生,以便此类错误立即显而易见?

换句话说:我可以强制 .NET 对象的形状必须与 SQL 查询的形状完全匹配吗?

最佳答案

不,您不能强制执行它,但您可以编写一组集成测试,这些测试将自动验证您的类是否仍然具有正确的形状。

关于.net - 对象上下文.翻译: avoiding column-mapping mistakes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9664656/

相关文章:

c# - 有没有办法创建一个 Accept 属性来强制执行 ASP.NET Core Controller Action 中的 Accept header 检查?

.net - TFS 项目可以相互引用吗?

c# - 使用 CSharpCodeProvider 时出现运行时错误程序集 'System.Runtime'

.net - SQL 'time' type in Entity Framework Code First

c# - Entity Framework 代码首先初始化外键

c# - Entity Framework 4 - 删除对象

c# - 为什么没有更新相当于 WillCascadeOnDelete?

c# - ASP.NET HeadLoginView 注销 单击。也退出其他本地网站

entity-framework - EF4 在没有导航的情况下在现有数据库上进行一对多映射

c# - 使用 Unity IOC 的 Web API - 如何解决我的 DBContext 依赖关系?