【发布时间】:2012-06-05 15:01:17
【问题描述】:
我正在使用 FluentData 作为我的数据库的 orm,并且我正在尝试创建一个通用查询方法:
internal static T QueryObject<T>(string sql, object[] param, Func<dynamic, T> mapper)
{
return MyDb.Sql(sql, param).QueryNoAutoMap<T>(mapper).FirstOrDefault();
}
除了我班级的功能:
public class MyDbObject
{
public int Id { get; set; }
}
public static MyDbObject mapper(dynamic row)
{
return new MyDbObject {
Id = row.Id
};
}
public static MyDbObject GetDbObjectFromTable(int id)
{
string sql = @"SELECT Id FROM MyTable WHERE Id=@Id";
dynamic param = new {Id = id};
return Query<MyDbObject>(sql, param, mapper);
}
在Query<MyDbObject>(sql, param, mapper) 编译器说:
An anonymous function or method group connot be used as a constituent value of a dynamically bound object.
有人知道这意味着什么吗?
编辑:
当我将方法转换为委托时,编译器不会报错:
public static Func<dynamic, MyDbObject> TableToMyDbObject =
(row) => new MyDbObject
{
Id = row.Id
}
它仍然引出了一个问题,为什么一种方式有效,而另一种方式无效。
【问题讨论】:
-
@SatelliteSD 实际上我可能有一个解决方案。当我将静态方法转换为 lambda 表达式时,编译器不会报错。
标签: c# orm delegates fluentdata