如何在实体框架和 Mysql 中使用规范函数

     2023-02-24     140

关键词:

【中文标题】如何在实体框架和 Mysql 中使用规范函数【英文标题】:how to use canonical functions in Entity Framework and Mysql 【发布时间】:2015-07-25 22:47:38 【问题描述】:

我想使用 MySql 数据库在 EntityFramework 中将时间跨度添加到 DateTime。

我尝试过使用DbFunctions.AddMinutes(someminutes)EntityFunctions.AddMinutes(someminutes),但是当我执行时我得到了类似的异常

FUNCTION projectName.AddMinutes 不存在

我已经用谷歌搜索但找不到如何执行规范函数。虽然有一个函数列表,但我还是不知道它们属于哪个类 https://msdn.microsoft.com/en-us/library/bb738563.aspx

我正在使用

    MySql.Data.Entities 6.8.3.0 EntityFramework 6.0.0 MySql.Data 6.8.4 MySql.Web 6.8.4 MySql(数据库)5.6.17

我的 Linq 查询如下

IQueryable<OrderViewModel> orders = _dbContext.Orders
                         .OrderByDescending(x => x.ID)
                         .Select(x => new OrderViewModel 
                                         ID = x.ID,
                                          AddedOn = DbFunctions.AddMinutes(x.AddedOn, diffMinutes).Value, 
                                          Customer = (x.IsGuestCheckOut == true ? x.CustomerEmail : x.Customer.FirstName + " " + x.Customer.LastName), 
                                          Phone = x.Phone, 
                                          TotalAmount = x.TotalAmount, 
                                          OrderStatus = x.OrderStatus );

在某些应用条件和分页的地方

【问题讨论】:

你是否在 usings 中添加了 System.Data.Entity 命名空间? @AdilMammadov 是的,它已经在那里了。 【参考方案1】:

其实我误会了它不是的错误

FUNCTION projectName.AddMinutes 不存在

但是

FUNCTION databaseName.AddMinutes 不存在

我不知道问题是什么。我有不兼容的驱动程序/连接器吗,我不知道。

为了解决这个问题,我刚刚创建了名为 AddMinutes 的函数,它在内部调用 DATE_ADD() 函数。函数定义如下

CREATE FUNCTION `AddMinutes`(actualDateTime datetime, minutesToAdd int)
RETURNS datetime
BEGIN
    RETURN DATE_ADD(actualDateTime, INTERVAL minutesToAdd MINUTE);
END

我知道这不是正确的解决方案,而是 HACK

【讨论】:

【参考方案2】:

AddMinutes 方法是 DateTime 类的一部分,因此您可以使用 DateTime 类的实例,即

DateTime dateNow = new DateTime.Now;
dateNow.AddMinutes(someminutes);

DbFunctions.AddMinutes(expression, number) 此函数只能出现在 LINQ to Entities 查询中 (https://msdn.microsoft.com/en-us/library/dn220081(v=vs.113).aspx):

Context.Train.Where(x => EntityFunctions.AddMinutes(x.Start, 10) > DateTime.Now)

【讨论】:

你确定你的mysql驱动支持规范函数吗? 如何检查驱动是否支持规范函数? 昨天我检查了你在 MSSQL 数据库上的 linq 查询,它可以正常工作。今天,我将在我的 Windows 上安装 MySql 数据库并检查你的 linq 查询。我会写你我使用什么样的连接器,条件是它可以工作。 FUNCTION projectName.AddMinutes 不存在 它是 FUNCTION databaseName.AddMinutes 不存在。我做了一个黑客来解决这个问题。我创建了内部调用 DATE_ADD() 的 AddMinutes 函数

如何在实体框架代码优先方法中使用表值函数?

】如何在实体框架代码优先方法中使用表值函数?【英文标题】:Howtousetablevaluedfunctioninentityframeworkcodefirstapproach?【发布时间】:2013-05-2708:37:34【问题描述】:我正在使用EntityFramework进行一个项目,现在我遇到了一种情况,我需... 查看详情

如何在 c# 实体框架核心中使用 FromSqlRaw() 将 OUTPUT 参数发送到 MySql 存储过程

】如何在c#实体框架核心中使用FromSqlRaw()将OUTPUT参数发送到MySql存储过程【英文标题】:HowsendOUTPUTparametertoMySqlstoredprocedureusingFromSqlRaw()inc#entityframeworkcore【发布时间】:2021-10-0722:27:51【问题描述】:在VisualStudioCodeC#项目中,我使... 查看详情

在实体框架中使用存储过程

...的代码,并且我已经在那里编写了存储过程。我的问题是如何在我的Web应用程序中调用该存储过程。存储过程:A 查看详情

如何使用实体框架和 MySQL 获取每个组的最新记录,包括相关实体

】如何使用实体框架和MySQL获取每个组的最新记录,包括相关实体【英文标题】:HowtogetlatestrecordforeachgroupusingEntityFrameworkandMySQLincludingrelatedentity【发布时间】:2013-10-1005:08:28【问题描述】:我正在使用带有MySQL数据库和DbContext的... 查看详情

如何在实体框架中使用 unsigned int / long 类型?

】如何在实体框架中使用unsignedint/long类型?【英文标题】:Howtouseunsignedint/longtypeswithEntityFramework?【发布时间】:2014-12-0520:55:26【问题描述】:long数据类型的类属性在添加新迁移(代码优先)时正确映射,但mysql的EF提供程序会... 查看详情

具有实体框架并使用 orderby 和 skip/take 的规范模式

...意到它没有OrderBy和Skip/Take功能,而且我找不到任何显示如何使用该 查看详情

如何使用实体框架代码优先的现有存储过程和函数

】如何使用实体框架代码优先的现有存储过程和函数【英文标题】:Howtouseexistingstoredprocedure&functionswithEntityFrameworkCode-first【发布时间】:2017-01-2602:24:13【问题描述】:我正在使用EntityFramework.Functions库,当我们使用实体框架代... 查看详情

如何在实体框架中映射 CONTAINSTABLE 函数(代码优先)?

】如何在实体框架中映射CONTAINSTABLE函数(代码优先)?【英文标题】:HowtomapCONTAINSTABLEfunctioninEntityFramework(code-first)?【发布时间】:2014-05-1622:17:11【问题描述】:感谢https://codefirstfunctions.codeplex.com/,现在可以在实体框架中映射... 查看详情

将 MySQL PASSWORD() 与实体框架一起使用

】将MySQLPASSWORD()与实体框架一起使用【英文标题】:UsingMySQLPASSWORD()withEntityFramework【发布时间】:2014-12-2317:31:35【问题描述】:我们有一个旧的MySQL数据库,它使用MySQL函数PASSWORD()存储密码。有没有办法在C#中使用实体框架来选... 查看详情

如何在 spring data jpa 中使用预测和规范?

】如何在springdatajpa中使用预测和规范?【英文标题】:Howtouseprojectionsandspecificationswithspringdatajpa?【发布时间】:2017-06-0105:40:02【问题描述】:我无法同时使用SpringDataJPA预测和规范。我有以下设置:实体:@EntitypublicclassCountry@Id@Ge... 查看详情

如何在使用实体框架时获取所有用户角色

】如何在使用实体框架时获取所有用户角色【英文标题】:howtogetalluserroleswhileusingentityframework【发布时间】:2011-09-2707:08:32【问题描述】:我在我的asp.net应用程序中使用实体框架和成员资格。在其中一个页面中,我需要通过加... 查看详情

如何在实体框架中循环创建和删除记录

】如何在实体框架中循环创建和删除记录【英文标题】:HowdoIcreateanddeleterecordsinEntityFrameworkinaloop【发布时间】:2022-01-0916:50:26【问题描述】:我们有一个postgres数据库来存储Event对象并使用EntityFramework作为我们的ORM。在定期运行... 查看详情

如何使用实体框架过滤实体中的所有内容

】如何使用实体框架过滤实体中的所有内容【英文标题】:HowtofiltereverythingfromanEntityusingEntityFramework【发布时间】:2012-09-1923:24:32【问题描述】:我正在使用VS2010、VB.NET和实体框架。我的应用程序中有一个文本框,您可以在其中... 查看详情

如何使用 MVC 和使用 .Net 的实体框架在表中动态添加数据库字段?

】如何使用MVC和使用.Net的实体框架在表中动态添加数据库字段?【英文标题】:HowtoadddatabasefieldintabledynamicallyusingMVCandEntityFrameworkusing.Net?【发布时间】:2014-05-0612:26:56【问题描述】:我正在开发一个.Net应用程序,并且我有可用... 查看详情

带有实体框架的自定义函数

...EntityFramework【发布时间】:2014-08-1210:13:59【问题描述】:如何在实体框架中使用自定义函数?我正在尝试使用实体框架调用模型定义的函数。我使用.NetFramework4.5我正在以XML格式打开实体模型(.edmx)文件。我在\'edmx:StorageModels\'部分... 查看详情

如何使用依赖注入在实体框架中执行具有多个模型的查询

】如何使用依赖注入在实体框架中执行具有多个模型的查询【英文标题】:HowtoexecuteQuerieswithmultiplemodelsinEntityframeworkwithDependencyInjection【发布时间】:2011-12-2712:29:35【问题描述】:我尝试在我的MVC应用程序中使用依赖注入和实体... 查看详情

使用 MySQL 和实体框架 6 StrongTypingException 错误

】使用MySQL和实体框架6StrongTypingException错误【英文标题】:UseMySQLandEntityFramework6StrongTypingExceptionerror【发布时间】:2016-09-1910:03:27【问题描述】:我在使用EntityFramework6和MySQL时遇到了一些麻烦。我使用VisualStudio2015和EntityFramework6... 查看详情

实体框架核心中等效的 SQL RIGHT 函数

】实体框架核心中等效的SQLRIGHT函数【英文标题】:SQLRIGHTfunctionequivalentinEntityframeworkCore【发布时间】:2019-02-1206:17:08【问题描述】:我正在处理一个NetCore项目,使用实体框架、mysql数据库和pomelo框架。我需要执行此查询,以便... 查看详情