LINQ中,怎么用到自定义函数和数据库函数?
我初学LINQ和EF,用的环境是VS2017,EF6,MYSQL,Winform,DBFirst。
我现在遇到了模型映射后,使用函数的问题。
1 数据库中定义的函数,无法映射到模型中,手动在.edmx文件中增加函数内容,每次更新模型时候,增加的内容会被自动删除?
在mysql数据库中定义了函数,返回varchar(8),其实函数内容就是date_format(p_date,‘%Y%m%d’) ,格式化一个日期。结果在VS2017中模型映射,竟然报警告,说无法确定函数的返回类型。
我参考了MSDN的文档,手动在.edmx中增加函数的xml内容,在类中手动添加了函数映射。这样倒是可以在LINQ中使用数据库函数。但是为什么每次更新模型,.edmx文件中的内容会被自动删除?如何避免这种情况?
2 我参考了MSDN的文档,有一种是模型定义函数。为什么里面的函数定义竟然不被LINQ识别?
我在.edmx的模型定义中,手动增加了<function>内容,函数表达式也是date_format(p_date,‘%Y%m%d’),同样在类中增加对应函数。LINQ运行时候,竟然也报无法识别表达式date_format的错误。
我多次修改函数表达式内容,发现LINQ只能识别SQLServer的函数?比如我在函数表达式中写CurrentTime(),竟然能被Mysql认识,自动转换为NOW(),但我直接写NOW()就报错了。
那我要格式化日期等函数,mysql中是date_format,在函数表达式中怎么写?有哪些函数能使用在mysql中的?我看datediff之类的函数,mysql就无法使用。