实体框架LINQ调用switchoffset()函数

实体框架LINQ调用switchoffset()函数,linq,entity-framework-core,Linq,Entity Framework Core,我有一个表,其中一列是datetimeoffset类型。我正在使用EF Core,如何调用sql内置函数switchoffset()?我已经有了用户的时区值,但不知道如何调用此函数将datetimeoffset值转换为用户自己的时间 我尝试了“SqlFunctions”,但没有这样的函数可用 谢谢 一,。在静态类中添加自定义/内置函数 2.正确映射这些功能: 3.在LINQ中使用它: 如果您的时区偏移量是静态的(您的用户国家是静态的,但日期时间存储在UTC中),一种解决方案是使用计算列: en

我有一个表,其中一列是datetimeoffset类型。我正在使用EF Core,如何调用sql内置函数switchoffset()?我已经有了用户的时区值,但不知道如何调用此函数将datetimeoffset值转换为用户自己的时间

我尝试了“SqlFunctions”,但没有这样的函数可用

谢谢

一,。在静态类中添加自定义/内置函数 2.正确映射这些功能: 3.在LINQ中使用它:
如果您的时区偏移量是静态的(您的用户国家是静态的,但日期时间存储在UTC中),一种解决方案是使用计算列:

entity.Property(e => e.TheDateTimeInIRIran).HasComputedColumnSql("(SWITCHOFFSET([MyDateTime], '+03:30'))", false);
您还可以将日期从greg转换为jalali,例如:

entity.Property(e => e.TheDateTimeInIRIran).HasComputedColumnSql("(FORMAT(SWITCHOFFSET([MyDateTime], '+03:30'), 'yyyy/MM/dd HH:mm:ss', 'fa-ir'))", false);

或者在时区使用支持夏令时的
子句(SQL Server 2016+)。

您是否找到了这样做的方法。如果你能找到一个解决办法,我会帮你很多。不,我还没弄明白。我现在使用.NET函数来转换值。像这样吗?
    ...
    .Select(i => new
    {
        TheDateTimeInUserTimeZone = CustomFunctions.ChangeTimeZoneOffset(i.MyDateTime, timeZoneOffsetVariable)
    }
entity.Property(e => e.TheDateTimeInIRIran).HasComputedColumnSql("(SWITCHOFFSET([MyDateTime], '+03:30'))", false);
entity.Property(e => e.TheDateTimeInIRIran).HasComputedColumnSql("(FORMAT(SWITCHOFFSET([MyDateTime], '+03:30'), 'yyyy/MM/dd HH:mm:ss', 'fa-ir'))", false);