我已经开始将旧的ADO.NET代码移植到Linq to Entities。一个特别有用的函数是ObjectContext.Translate
及其伴随ObjectContext.ExecuteStoreQuery
,它允许您使用任意SQL并将它们解包为普通的旧数据对象。
但是,在列映射中容易出错:错误的列名或不同的情况会导致.NET属性不再与预期的SQL列匹配。检测数据库架构何时更改时,这一点尤其棘手。当.NET属性与sql列不对应时,不会抛出任何异常 - 而是Linq到实体sets the property to the default value(null
,0
等)。这种行为可能偶尔会有用,允许类型包含额外的属性,但它也非常擅长隐藏错误,特别是当null
或默认值是该列的有效值时。
有没有办法改变这种行为或至少检测它何时发生,以便这些错误立即明显?
换句话说:我可以强制.NET对象的形状必须与SQL查询的形状完全匹配吗?
答案 0 :(得分:2)
不,你不能强制执行它,但你可以编写一组集成测试,它会自动验证你的类仍然具有正确的形状。