gpt4 book ai didi

c# - 如何在执行前更改类型为 "DateTime"的所有属性值

转载 作者:行者123 更新时间:2023-11-30 12:58:46 26 4
gpt4 key购买 nike

我主要关心的是在表达式评估之前更改属性值“不是日期时间解析逻辑”,因为这只是一种情况,在其他情况下我需要将其他属性值从 x 更改为 y

在我使用 EntityFramework 6 的应用程序中,我有日期时间输入格式“mm/dd/yyyy”或“dd/mm/yyyy”的应用程序设置,当用户发出请求(查询或保存更改)时,我想更改所有日期时间格式为 mm/dd/yyyy,如果设置为 mm/dd/yyyy,则无需更改,但如果设置为 dd/mm/yyyy,则我需要将其转换为 mm/dd/yyyy,我需要知道在哪里以及如何要覆盖属性值并实现目标,我是 ExpressionVisitors 的新手。

这可能是起点

internal class DateTimeInterceptor : IDbCommandTreeInterceptor
{
public void TreeCreated(DbCommandTreeInterceptionContext interceptionContext)
{
if (interceptionContext.OriginalResult.DataSpace == DataSpace.SSpace)
{
var queryCommand = interceptionContext.Result as DbQueryCommandTree;
if (queryCommand != null)
{
var newQuery = queryCommand.Query.Accept(new DateTimeQueryVisitor());
interceptionContext.Result = new DbQueryCommandTree(queryCommand.MetadataWorkspace, queryCommand.DataSpace, newQuery);
}
}
}
}

internal class DateTimeQueryVisitor : DefaultExpressionVisitor
{
public override DbExpression Visit(DbScanExpression expression)
{
if (!expression.Target.ElementType.MetadataProperties.Any(mp => mp.Name.GetType() == typeof(DateTime)))
{
return base.Visit(expression);
}

// here i should do the work for changing the property value
// Change the expression

var binding = expression.Bind();
return binding.Expression; //should be replaced with the modified expression
}
}

谢谢

最佳答案

我认为这是不可撤销的,作为一个人而不是机器告诉我,这是什么格式:02/02/2014?你能猜出这里是哪一天和哪一个月吗?无论如何关于 DateTime 解析你可以阅读一些 here :

编辑抱歉,我的意思是发表评论而不是回答,如果有人对此有疑问作为答案,请告诉我将其删除。

关于c# - 如何在执行前更改类型为 "DateTime"的所有属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28647778/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com