我想在我的解决方案中的不同项目中的许多地方使用SqlFunctions.StringConvert()
。
我不希望每个项目都引用system.data.entity
,所以我决定在我的Common
项目中放置一个包装器(所有其他项目都引用Common
)。
我怎么写这样的包装?如果我在做:
public static class SqlUtils
{
public static Func<decimal?, string> StringConvert()
{
return x => SqlFunctions.StringConvert(x);
}
public static Func<double?, string> StringConvert()
{
return x => SqlFunctions.StringConvert(x);
}
}
然后我不能像以下那样使用它:
query.Where(x => SqlUtils.StringConvert((decimal)x.SerialNumber).Contains(serialNumber));
因为实体框架不知道方法SqlUtils.StringConvert。
任何想法怎么做?
答案 0 :(得分:0)
你可以像下面这样包装函数,但我觉得它没有意义:
public static class SqlUtils
{
public static string StringConvert(double? x)
{
return SqlFunctions.StringConvert(x);
}
public static string StringConvert(decimal? x)
{
return SqlFunctions.StringConvert(x);
}
}
答案 1 :(得分:0)
如果您希望EF能够将其全部翻译为SQL,则需要做更多工作,请参阅:http://blogs.microsoft.co.il/blogs/gilf/archive/2010/01/01/defining-custom-functions-in-entity-framework.aspx