我试图简单地使用 Dapper 将我的数据库表映射到 C# 中的类型,但是,我的某些类型需要表中没有的其他元素。为此,我使用了一个可以获取列值并设置适当属性的工厂。
public IEnumerable<IMyType> All() {
var query = _connection.Query("SELECT * FROM [table]");
return query.Select(o => _myTypeFactory.Create(o));
}
目前,这导致 return 语句产生错误:
无法将表达式类型转换'System.Collections.Generic.IEnumerable<dynamic>'
为返回类型'System.Collections.Generic.IEnumerable<IMyType>'
我的工厂类看起来像这样:
public class MyTypeFactory {
public IMyType Create(dynamic o) {
return Create((String) o.Code, (Int32) o.KeyID);
}
public IMyType Create(String code, Int32 keyID) {
return new MyType(code, Cache.Lookup(keyID));
}
}
为什么Select()
方法不返回IEnumerable<IMyType>
?我需要做什么才能完成这项工作?这只是错误的方法,还有更好的方法吗?