Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#实体框架字符串规范函数_C#_Sql_Sql Server_Entity Framework - Fatal编程技术网

C#实体框架字符串规范函数

C#实体框架字符串规范函数,c#,sql,sql-server,entity-framework,C#,Sql,Sql Server,Entity Framework,如何在实体框架查询中使用Right功能? 我有一个sql查询 SELECT RIGHT('0' + '4'), DATEDIFF(MINUTE, DateReceived, GETDATE()) % 60), 2) FROM mytable //RESULTS = 04 如果传递的字符串长度小于2,则Right函数基本上将在前面添加0 现在我想在实体框架查询中做同样的事情: var query = (from b in sovDB.myTable select new { myMi

如何在实体框架查询中使用
Right
功能? 我有一个sql查询

SELECT RIGHT('0' + '4'), DATEDIFF(MINUTE, DateReceived, GETDATE()) % 60), 2)  
FROM mytable //RESULTS = 04
如果传递的字符串长度小于2,则
Right
函数基本上将在前面添加
0

现在我想在实体框架查询中做同样的事情:

var query = (from b in sovDB.myTable
select new
{
    myMinutes = Right("0"+ (SqlFunctions.DateDiff("MINUTE", b.DateReceived,  
    SqlFunctions.GetDate()) % 60),2)
}).ToList();

但它不起作用,不知何故,
Right
函数不受支持。

尝试将计算分钟显式转换为字符串:

var query = (from b in sovDB.myTable
select new
{
    myMinutes = Right("0" + SqlFunctions.StringConvert((int)(SqlFunctions.DateDiff("MINUTE", b.DateReceived, SqlFunctions.GetDate()) % 60)), 2)
}).ToList();

尝试将计算的分钟数显式转换为字符串:

var query = (from b in sovDB.myTable
select new
{
    myMinutes = Right("0" + SqlFunctions.StringConvert((int)(SqlFunctions.DateDiff("MINUTE", b.DateReceived, SqlFunctions.GetDate()) % 60)), 2)
}).ToList();

只是在将旧存储过程转换为实体时遇到了同样的问题。我使用了SqlFunctions.Replicate,这个技巧和实体框架没有任何问题

var query = (from b in sovDB.myTable
select new
{
    myMinutes = SqlFunctions.Replicate("0", 2 - (SqlFunctions.DateDiff("MINUTE", b.DateReceived, GetDate()) % 60).Length) + (SqlFunctions.DateDiff("MINUTE", b.DateReceived, GetDate()) % 60)
}).ToList();

只是在将旧存储过程转换为实体时遇到了同样的问题。我使用了SqlFunctions.Replicate,这个技巧和实体框架没有任何问题

var query = (from b in sovDB.myTable
select new
{
    myMinutes = SqlFunctions.Replicate("0", 2 - (SqlFunctions.DateDiff("MINUTE", b.DateReceived, GetDate()) % 60).Length) + (SqlFunctions.DateDiff("MINUTE", b.DateReceived, GetDate()) % 60)
}).ToList();

SQL中的括号看起来不平衡。我不确定EF是否支持隐式类型转换:
“0”
(字符串)
+(SqlFunctions.DateDiff(“分钟”,b.DateReceived,SqlFunctions.GetDate())%60)
(int)。确切的错误消息是什么?SQL中的括号看起来不平衡。我不确定EF是否支持隐式类型转换:
“0”
(字符串)
+(SqlFunctions.DateDiff(“分钟”,b.DateReceived,SqlFunctions.GetDate())%60)
(int)。确切的错误消息是什么?