为什么EF Core 2.2的默认主键设置为nvarchar(450) - c#

我们将代码库从EF6.2升级到EF Core 2.2,我们的团队发现基于字符串的身份密钥的默认值将生成带有以下内容的主键列:

EF 6.2(SQL Server)中的nvarchar(128)
EF Core 2.2(SQL Server)中的nvarchar(450)

做出此决定的原因是什么?

参考方案

SQL Server允许索引最大为900字节。 nvarchar中的字符为2个字节。 2 * 450 =900。我们(EF团队)担心EF6中多个列上的主键。在EF Core中,我们意识到仅索引了指定的字符(“ var”用于变化的长度),因此我们可以将所有字符最多进行450个,只要键中所有列的总字符少于450个,它就仍然可以工作。

.NET Core 3 / EF.Core 3:QueryModelGenerator,RelationalQueryModelVisitor等发生了什么 - c#

我想知道发生了什么事:QueryModelGenerator,RelationalQueryModelVisitor和queryCompilationContext.CreateQuerymodelVisitor()似乎都消失了。我有以下代码,但无法尝试将其从2.2转换为.NET Core 3public static string ToSql<TEn…

ASP.NET Core Singleton实例与瞬态实例的性能 - c#

在ASP.NET Core依赖注入中,我只是想知道注册Singleton实例是否会比注册Transient实例更好地提高性能?在我看来,对于Singleton实例,创建新对象和相关对象只需花费一次时间。对于Transient实例,此成本将针对每个服务请求重复。因此Singleton似乎更好。但是,在Singleton上使用Transient时,我们可以获得多…

如何在ASP.NET Core Web应用程序中增加JSON反序列化MaxDepth限制 - c#

我们正在将ASP.NET Core 2.1与.NET Framework 4.6.2结合使用。我们有一个客户需要向我们的Web应用程序发送一个很大程度上嵌套的json结构。当他们进行此调用时,我们将输出以下日志并返回错误: 读取器的MaxDepth超过了32。路径“ super.long.path.to property”,第1行,位置42111。”我浏览了…

ASP.NET Core-在Singleton注入上存储库依赖项注入失败 - c#

我正在使用SoapCore为我的ASP.NET Core MVC应用程序创建Web服务。我正在使用Entity Framework Core和简单的存储库模式来获取我的数据库数据。我通过Startup.cs中的.AddSingleton()注入存储库类:services.AddSingleton<IImportRepository, ImportRep…

使EF Core 2与仅具有吸气剂的属性一起使用,而没有支持字段 - c#

我的目标是使用以下代码使Entity Framework 2更好地发挥作用:public class Foo { public Guid Id { get; } // This should NOT change public string NotRequiredProperty {get; set;} public Foo(Guid id) => I…