0

我的框架设置首先使用 BaseEntity 类型的代码,该类型仅包含 Id 和 Name 属性(我的所有数据库表至少有这两个字段)。问题是 db 是在我们实现 EF 之前编写的,因此 db 中的许多列名与这个好的 Id/Name 约定不匹配(例如,可能有 CustomerId 和 CustomerName 等)。现在就基本的 CRUD 操作而言,这可以正常工作,因为我只是在映射中执行此操作:

this.HasKey(t => t.Id).Property(t => t.Id).HasColumnName("CustomerId");

它正确地从一个映射到另一个,一切都很好

但是,我们也有一些只能封装在存储过程中的复杂数据库逻辑,因此在我的 ObjectContext 中,我有一个通用方法来调用返回 IList 的 sprocs,并允许您传入要调用的 proc 名称和它需要的任何参数,然后转到 ObjectContext 上的底层数据库对象进行调用。这对于 poco 中的属性名称与 db 中的属性名称匹配的类非常有用,但如果它们不匹配,它会忽略我为该对象设置的任何映射(见上文),并且出现如下错误:

The data reader is incompatible with the specified 'SomeNamespace.Customer'. 
A member of the type, 'Id', does not have a corresponding column in the data 
reader with the same name.

有没有什么干净的方法可以解决这个问题或正确地指示它在底层数据读取器上正确映射?

谢谢

4

0 回答 0