0

我想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 方法。

任何想法如何做到这一点?

4

2 回答 2

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);
    }
}
于 2011-10-20T03:03:57.743 回答
0

如果您希望 EF 能够将其全部转换为 SQL,则必须做更多工作,请参阅:http: //blogs.microsoft.co.il/blogs/gilf/archive/2010/01/01/defining-custom -functions-in-entity-framework.aspx

于 2011-10-20T03:13:44.777 回答