我在Entity Framework 4.1和MySql Connector/Net 6.4.3中遇到了规范函数的问题.根据Microsoft的说法,所有数据库提供者都可以从LINQ生成的SQL中理解并将其转换为本地SQL方言; http://msdn.microsoft.com/en-us/library/bb738626.aspx但是,我的代码在CurrentUtcDateTime()上窒息,这里列出了; http://msdn.microsoft.com/en-us/library/bb738563.aspx
以下是生成攻击性SQL的LINQ查询(来自NopCommerce):
public List<Poll> GetPolls(int languageId, int pollCount, bool loadShownOnHomePageOnly)
{
bool showHidden = NopContext.Current.IsAdmin;
var query = (IQueryable<Poll>)_context.Polls;
if (!showHidden)
{
query = query.Where(p => p.Published);
query = query.Where(p => !p.StartDate.HasValue || p.StartDate <= DateTime.UtcNow);
query = query.Where(p => !p.EndDate.HasValue || p.EndDate >= DateTime.UtcNow);
}
if (loadShownOnHomePageOnly)
{
query = query.Where(p => p.ShowOnHomePage);
}
if (languageId > 0)
{
query = query.Where(p => p.LanguageId == languageId);
}
query = query.OrderBy(p => p.DisplayOrder); …Run Code Online (Sandbox Code Playgroud)