
[英]'CoinEffect' is a type, which is not valid in the given context
[英]DbFunctions, is a type which is not valid in the given context
我尝试使用
SqlServerDbFunctionsExtensions.DateDiffDay<\/code>但
DbFunctions _<\/code>说
CS0119:DbFunctions 是在给定上下文中无效的类型
我也尝试了以下但我得到了同样的错误
提供在 LINQ to Entities 查询中使用时转换为数据库函数的 CLR 方法。 在其他上下文(例如 LINQ to Objects)中调用这些方法将引发 NotSupportedException。
您只能在 linq 中访问它以进行实体查询,而不能做您想做的事情。
在 DateDiffDay
你在查询中像这样使用它 DateDiffDay(starDate, EndDate)
DateDiffDay是一种扩展方法。 您使用对象实例调用它,然后将没有该对象的参数作为第一个参数传递。 在你的情况下:
EF.Functions.DateDiffDay(DateTime.Now, i.InvoiceDate) + i.ProductNav.GracePeriod.GetValueOrDefault();
您可能需要添加 using 指令:
using Microsoft.EntityFrameworkCore;
以及所需的 nuget 包
其他答案是您通常会做的,但我认为值得指出的是,它们暗示扩展方法是某种神奇的东西,只能以某种方式调用,这真的不是真的
没有什么能阻止您调用扩展方法,就好像它是任何普通的静态方法一样; 您只需提供一些实例即可将其作为第一个参数调用
这是一个扩展方法:
public static string NoL(this string x){
return x.Replace("l","");
}
请注意第一个参数的this
,使其成为扩展。 您可以将其称为“在字符串上”或将其传递给字符串:
var hw = "Hello World";
var heoword1 = hw.NoL());
var heoword2 = Ext.NoL(hw);
可能在所有情况下,您都会使用第一种形式,因为存在静态方法扩展以使代码更加紧凑和可读,但是从技术上讲,您尝试调用您所做的方法没有任何问题,您只是没有提供有效的 first范围。 这会起作用:
SqlServerDbFunctionsExtensions.DateDiffDay(EF.Functions, DateTime.Now, i.Invoicedate)
EF.Functions 是您通常只需调用 DateDiff 的实例:
EF.Functions.DateDiff(DateTime.Now, i.Invoicedate)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.