在尝试将命名值元组序列化为JSON字符串时,它会丢失分配给项目的名称
(string type, string text) myTypes = ("A", "I am an animal");
var cnvValue = JsonConvert.SerializeObject(myTypes);
Run Code Online (Sandbox Code Playgroud)
我期待序列化值为
{"type":"A","text":"我是动物"}
但实际结果是
{"Item1":"A","Item2":"我是动物"}
我有兴趣知道两件事
升级到 EFCore 3.1 后出现不推荐使用的警告:
警告 CS0618 'RelationalDatabaseFacadeExtensions.ExecuteSqlCommandAsync(DatabaseFacade, RawSqlString, params object[])' 已过时:'对于使用纯字符串的 SQL 查询的异步执行,请改用 ExecuteSqlRawAsync。对于使用内插字符串语法创建参数的 SQL 查询的异步执行,请改用 ExecuteSqlInterpolatedAsync。
警告 CS0618 'RelationalDatabaseFacadeExtensions.ExecuteSqlCommand(DatabaseFacade, RawSqlString, params object[])' 已过时:'对于使用纯字符串执行 SQL 查询,请改用 ExecuteSqlRaw。要使用内插字符串语法执行 SQL 查询以创建参数,请改用 ExecuteSqlInterpolated。
它们相关的旧代码如下所示:
context.Database.ExecuteSqlCommand("DELETE FROM Table WHERE ID = @p0", id);
await context.Database.ExecuteSqlCommandAsync("DELETE FROM Table2 WHERE ID = @p0", id);
Run Code Online (Sandbox Code Playgroud)
查阅精美手册,@somename
根本没有讨论典型的 SQL Server 参数,实际上我什至看不到文档中的示例代码(它们显示在表名后打开括号)是有效的 SQL 语法:
context.Database.ExecuteSqlRaw("SELECT * FROM [dbo].[SearchBlogs]({0})", userSuppliedSearchTerm)
Run Code Online (Sandbox Code Playgroud)
我没有看到文档在哪里定义了userSuppliedSearchTerm
变量的内容或其类型,我正在努力了解它如何成为一个明智的 SQL 块(string userSuppliedSearchTerm = "WHERE id = 123";
带有烘焙值?SQL 注入?)或单个原始值( int userSuppliedSearchTerm = …
TLDR:
如何在临时插槽中运行的应用程序知道它是否正在升级并连接到测试数据库上的测试数据库/运行迁移?而且,临时插槽中的同一个应用程序如何自动意识到它已被交换到实时生产槽并且现在负责实时业务操作?(因此它可以切换到使用实时数据库,迁移实时数据库等)
长版:
该主题部分由以下问题涵盖:Azure Web App部署插槽,具有数据库迁移功能
但我没有真正得到我的答案..
我的应用程序使用FluentMigrator,在应用程序初始化时由事件/代码启动,以运行数据库迁移.MSBuild曾经这样做,但现在我很确定它是以编程方式调用的
似乎最明智的是:
如果登台具有破坏数据库以便生产理解的迁移,我看不到任何其他方式让生产保持功能,同时正在证明分段; 两个DB必须分开
因此,如果数据库是分开的,那么切换世界到使用暂存槽中的代码的唯一(几乎)零停机方式是,如果交换机导致应用程序重新初始化并更改它以使其变为指向生产数据库,然后fluentmigrator(也应该再次调用)可以将同一组迁移应用于生产,并且staging中的代码在生产数据库上运行一段时间的业务.
..production codebase已更新,并且发生了回调.生产代码永远不会迁移生产数据库,因为在生产中的新版本启动时,它已经由暂存代码更新
我预见到的事情唯一的另一种方法是拥有两个DB,两个插槽,而且你永远不会执行交换; 您只需部署到暂存,它会更新暂存数据库,您进行测试并证明是好的,您部署到生产中,它会更新产品数据库,验证应用程序正在运行......并且世界在生产时遭受了少量的停机时间(如果构建失败,则为主要数量)
前者有机制吗?当交换发生时,应用程序如何指向新数据库以及如何再次运行迁移?
如果后者是唯一的方式,那么部署插槽也可能只是另一个Web应用程序,对吧?用于登台的Web应用程序和用于prod的Web应用程序,以减轻任何混淆槽因为它们在门户中的表示方式而导致.
在某个时刻,我将不得不准备一个日期的物品价格清单.粒度是1天,当有一个项目的销售时,我将平均价格以获得当天的平均值.有些日子里没有销售,而且我很适合通过拉动销售的前一次和下次销售来使用足够的近似值,并且它们之间的每一天都有一个价格从一个线性转换到另一个的价格.
想象一下原始数据是:
Item Date Price
Bread 2000-01-01 10
Bread 2000-01-02 9.5
Bread 2000-01-04 9.1
Sugar 2000-01-01 100
Sugar 2000-01-11 150
Run Code Online (Sandbox Code Playgroud)
我可以到这里:
Item Date Price
Bread 2000-01-01 10
Bread 2000-01-02 9.5
Bread 2000-01-03 NULL
Bread 2000-01-04 9.1
Sugar 2000-01-01 100
Sugar 2000-01-02 NULL
Sugar 2000-01-03 NULL
Sugar 2000-01-04 NULL
Sugar 2000-01-05 NULL
Sugar 2000-01-06 NULL
Sugar 2000-01-07 NULL
Sugar 2000-01-08 NULL
Sugar 2000-01-09 NULL
Sugar 2000-01-10 NULL
Sugar 2000-01-11 150
Run Code Online (Sandbox Code Playgroud)
我想去的地方是:
Item Date Price
Bread 2000-01-01 10
Bread 2000-01-02 9.5
Bread …
Run Code Online (Sandbox Code Playgroud) 我已经阅读了我能找到的与此错误相关的所有问题,但它们并没有完全描述这种情况。在其他情况下,人们正在做一些事情,例如按顺序仅引用一个别名表(从联合的一侧) - 我理解为什么 SQLS 在我读过的所有其他问题中抱怨这个特定的错误。
我不明白为什么 SQL Server 对此有异议order by
;order by 中提到的唯一列肯定是结果集 select 的成员:
--example data:
-- a,b,c
-- 1, ,2
-- ,3,5
SELECT 1 AS a, null AS b, 2 AS c INTO #tmp
UNION
SELECT null AS a, 3 AS b, 5 AS c
--let's call it a lame version of a rollup
SELECT * FROM #tmp --detail rows
UNION ALL
SELECT a, b, SUM(c) FROM #tmp --summary row
GROUP BY a, b
--the problem
ORDER …
Run Code Online (Sandbox Code Playgroud) 最近看到一个在Unity中使用C#生成对象的教程。因为老师使用了这样的函数
public IEnumerator CallSpawner()
{
yield return new WaitForSeconds(0.5f);
SpawnObstacles();
}
Run Code Online (Sandbox Code Playgroud)
我想问一下 IEnumerator 函数有什么用?我们不能通过这个过程来做到这一点吗
float diffTime = 0f;
private void Update()
{
if(Time.time - diffTime == 0.5f)
{
diffTime = Time.time;
SpawnObstacles();
}
}
Run Code Online (Sandbox Code Playgroud)
我阅读了文档但无法理解它..
在尝试执行与部署到Azure /在SSMS 2012中创建BACPAC相关的任何事情时,我遇到了数据库中3个用户(他们不是当前登录的用户)中的每个用户的错误
验证数据包的模式模型失败.错误SQL71501:验证元素[VARIABLE_USER_NAME_HERE]时出错:用户:[VARIABLE_USER_NAME_HERE]有一个未解析的对Login [VARIABLE_USER_NAME_HERE]的引用.(Microsoft.SqlServer.Dac)
有线索吗?
我读过很多SO文章,但我似乎无法找到问题的好答案.发布的建议包括将日期转换为字符串多次以及从字符串转换为一次的函数,在结尾处连接位并且它们似乎只是......凌乱
所以问题:
我们在世界各地都有服务器.所有服务器都在其自己的本地时间运行,并使用服务器本地的时间条目保留日志.有些服务器在DST观察区域,有些则不是
假设我从日志中得到这些字符串:2013-01-01 12:34:56,2013-07-01 12:34:56 而且我知道这台服务器在纽约,所以它是UTC-5或UTC-4 DST正在运行中
我在香港的服务器上有相同的字符串,其中DST不适用,时区为+8
我所追求的是一段代码,我可以告诉它:
并且代码将字符串解析为DateTimeOffset,如果解析的时间与DST相关,则根据DST调整偏移量
例如:NY服务器日志显示" 2013-01-01 ..." DST 并不适用于这个日期在一月如此解析的日期应该是:在纽约时间12:34:56,又名17点34分56秒在UTC(因为它是-5,没有DST)
NY服务器日志显示" 2013-07-01 ..." DST DOES适用于这个日期六月如此解析的日期应该是:12:34:56纽约时段,又名16时34分56秒在UTC(因为它是-4,与DST)
HK服务器,两个日期时间解析为UTC时间04:34:56
多谢你们
考虑以下代码:
public static IQueryable<T> WhereDynamic<T>(this IQueryable<T> sourceList, string query)
{
if (string.IsNullOrEmpty(query))
{
return sourceList;
}
try
{
var properties = typeof(T).GetProperties()
.Where(x => x.CanRead && x.CanWrite && !x.GetGetMethod().IsVirtual);
//Expression
sourceList = sourceList.Where(c =>
properties.Any(p => p.GetValue(c) != null && p.GetValue(c).ToString()
.Contains(query, StringComparison.InvariantCultureIgnoreCase)));
}
catch (Exception e)
{
Console.WriteLine(e);
}
return sourceList;
}
Run Code Online (Sandbox Code Playgroud)
我创建了一个 .Net Standard 2.0 类型的项目,我想在其中使用上面的代码。但问题是无法使用这种重载:
.Contains method (query, StringComparison.InvariantCultureIgnoreCase)
Run Code Online (Sandbox Code Playgroud)
它不存在。而在 .NET Core 项目中,则没有问题。对于该Contains()
方法的重载,您有解决方案或替代方案吗?
我需要更换这个:
fixed variable 123
Run Code Online (Sandbox Code Playgroud)
有了这个:
fixed variable 234
Run Code Online (Sandbox Code Playgroud)
在 VSCode 中,这匹配得很好:
fixed(.*)123
Run Code Online (Sandbox Code Playgroud)
如果一个数字如下,我找不到任何方法让它把捕获放在输出中:
fixed$1234
fixed${1}234
Run Code Online (Sandbox Code Playgroud)
但是查找替换窗口看起来像这样:
我读到 VSCode 使用铁锈味的雷克斯 ..这里表示${1}234
应该可以工作,但 VSCode 只是将它放在输出中..
根据此处的样式尝试命名捕获
fixed(?P<n>.*)123 //"invalid regular expression" error
Run Code Online (Sandbox Code Playgroud)
ps; 我很感激我可以在人为的例子中破解它
FIND: fixed (.*) 123
REPL: fixed $1 234
Run Code Online (Sandbox Code Playgroud)
这在 vscode 中确实有效:
但并非我的所有数据在数字之前都具有相同的字符
c# ×5
sql-server ×3
azure ×2
sql ×2
.net-core ×1
datetime ×1
dst ×1
ef-core-3.1 ×1
find-replace ×1
json.net ×1
parsing ×1
regex ×1
ssms-2012 ×1
timezone ×1
tuples ×1
valuetuple ×1