ObjectContext.Translate:避免列映射错误

时间:2012-03-12 09:39:30

标签: .net entity-framework

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

但是,在列映射中容易出错:错误的列名或不同的情况会导致.NET属性不再与预期的SQL列匹配。检测数据库架构何时更改时,这一点尤其棘手。当.NET属性与sql列不对应时,不会抛出任何异常 - 而是Linq到实体sets the property to the default valuenull0等)。这种行为可能偶尔会有用,允许类型包含额外的属性,但它也非常擅长隐藏错误,特别是当null或默认值是该列的有效值时。

有没有办法改变这种行为或至少检测它何时发生,以便这些错误立即明显?

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

1 个答案:

答案 0 :(得分:2)

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