首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在LINQ to Entity Framework中使用SQL 2012格式化函数

在LINQ to Entity Framework中使用SQL 2012格式化函数
EN

Stack Overflow用户
提问于 2014-11-19 22:50:58
回答 2查看 835关注 0票数 1

我想将内置的SQL 2012格式函数添加到静态函数类中,以便与LINQ to Entity Framework一起使用。

我跟着

这个

模拟添加内置SQL函数的源代码。

public static class ExtendSqlFunctions
{    
    [DbFunction("SqlServer", "FORMAT")]
    public static string Format(Int64? arg, string formatType, string culture)
    {
        throw new NotSupportedException();
    }    
}

错误:

指定方法的System.String格式(System.Nullable`1

System.Int64

类型'ExtendSqlFunctions‘上的’LINQ,LINQ,LINQ)‘无法转换为LINQ to Entities存储表达式。

更新

通过将"FORMAT“添加到实体框架模型的SSDL中,我能够获得一个工作版本。

所以看起来微软在他们的内部库之外并不支持"DbFunction SqlServer“。

对此不确定?

http://msdn.microsoft.com/en-us/library/vstudio/bb738614(v=vs.100).aspx

(

http://msdn.microsoft.com/en-us/library/vstudio/bb738614(v=vs.100%29.aspx

)

如果有人知道如何在不编辑SSDL的情况下添加内置SQL函数,请让我知道。

更新

我已经在CodePlex上添加了这个问题

https://entityframework.codeplex.com/workitem/2586

"rjperes“将其添加为CodePlex上的讨论。

https://entityframework.codeplex.com/discussions/572518

EN

Stack Overflow用户

发布于 2021-02-17 21:58:44

EntityFramework.Functions

库提供了一种很好的方式来声明各种数据库函数并在C#代码中引用它们。格式函数可以声明为:

public static class DatabaseFunctions
{
    [Function(FunctionType.BuiltInFunction, "FORMAT")]
    public static string Format(decimal value, string format) => Function.CallNotSupported();
}

然后,它应该包含在DB context的OnModelCreating中:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    //  ...
    modelBuilder.Conventions.Add(new FunctionConvention(typeof(DatabaseFunctions)));
}

在此之后,它可以像这样使用

context.Items.Select(i => DatabaseFunctions.Format(i.Value, "0.00"));
票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27019790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档