实体框架中的延迟加载是加载和访问相关实体时发生的默认现象.然而,急切加载是指强制加载所有这些关系的做法.我遇到的问题是,在什么情况下,急切加载可能比延迟加载更有益.问这个,因为很明显延迟加载更加资源友好,即使我们使用这个ToList()
方法,我们仍然可以利用延迟加载行为.但是,我认为可能延迟加载会增加对实际数据库的请求数量,这也许是开发人员使用该Inlcude
方法强制加载所有关系的原因.例如,在MVC 5中使用Visual Studio自动搭建时,在控制器中自动创建的Index方法总是使用Eager Loading,而且我总是有一个问题,即在这种情况下Microsoft默认使用Eager Loading.
如果有人向我解释,在什么情况下,渴望加载比延迟加载更有益,我会很感激,为什么我们一直使用它,同时有更多的资源友好作为延迟加载.
我正试图通过提供反伪造令牌来保护一个针对副脚本的post方法但注意到,在.Net Core中还有另一个名为as的属性AutoAntiForgeryToken
.XML注释和在线搜索没有提供有关此新属性的大量信息.
任何有关新属性的帮助和描述都将非常感激.
一直以来,说到微服务架构,我首先想到的就是NATS和Kafka。但最近我在 dotnet core 中发现了这个 gRPC 模板,这引起了我的注意。我读了很多相关内容并观看了很多视频,但我认为其中任何一个都不能正确解决 gRPC,因为它们通常在 gRPC 和消息代理或 REST 等协议之间进行对比,我认为这是非常不合适的,尽管 SOAP 是相关的这里。我的假设是 gRPC 是 SOAP 的现代版本,由于它有协议缓冲区,因此具有更好的性能和更少的实现麻烦。而且我认为 gRPC 根本无法与 Kafka 或 NATS 相比。而且它不能取代 RESTful 服务,就像 SOAP 一样。
现在的问题是,我的假设在多大程度上是正确的?例如,当涉及到在集群上的节点之间选择通信桥时,我现在是否必须将 gPRC 添加到我的选项中(NATS、Kafkam Rabbit 等),或者我应该在创建 Web 代理以将外部请求桥接至我的微服务?
最后,实时通信怎么样,gRPC可以完全替代websocket/socket.io/signalR吗?它取代了什么?
我们目前在 NATS 后面使用 Redis 进行缓存,这是标准做法。然而,我遇到了这样的想法:我们可以利用 NATS 中的对象存储或键值功能来本地实现缓存。然而,我知道:
另一方面,所有这些都具有数据的 TTL,这是有利的。
我的问题是,用 JetStream 替换 NATS 后面的当前 Redis 缓存在技术上是否正确?
我们正在处理的一些可能的场景:
C# 9 已经有一段时间了,现在我才注意到 SDK 5 已经正式发布。出于这个原因,我切换到 C# 9 和 .Net 5,但不幸的是,“ms-dotnettools.csharp”(C# 的官方 VS Code 扩展)没有语法突出显示和对 C# 9 的适当 IntelliSense 支持。例如,它没有突出显示record
类型,或者当我使用顶级语句时,它会将其与编译时错误混淆。但是,该项目始终编译。
在 VS Code 中进行编码时,是否有任何解决方法可以解决这些问题并享受令人惊叹的 C# 9.0?
官方ASP.Net Core表示可以通过重启visual studio来修复以下错误:
Scaffold-DbContext : The term 'Scaffold-DbContext' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
Run Code Online (Sandbox Code Playgroud)
但是命令仍然失败.
我按照ASP.Net核心在线文档中提供的示例在Package Manager控制台中运行它.
Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
Run Code Online (Sandbox Code Playgroud) 传统上,Visual Studio中常常使用脚手架来加速添加控制器,区域,视图等.在我安装ASP.NET Core之后,我注意到所有这些都消失了,这很可怕(特别是当你想添加一个新的时候)区域,手动完成工作将是一个可怕的颈部疼痛).
有没有办法把它们带回来?为什么微软团队会做出如此糟糕的决定?
ASP.Net Core中的客户端验证(与ASP.Net MVC 5不同)无效.我有以下代码:
public class CountryModel{
[Required]
public String Title {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
并在我的视图页面
using(Html.BeginForm()){
@Html.LabelFor(x=> x.Title)
@Html.ValidationMessageFor(x=> x.Title)
@Html.EditorFor(x=> x.Title)
<Button>Add</Button>
}
Run Code Online (Sandbox Code Playgroud)
将以下脚本添加到页面末尾:
...
<script src="~/lib/jquery/dist/jquery.js"></script>
<script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
但它失败了.我通过在浏览器中查看源代码来检查脚本,并且脚本已正确加载.我已经指出了一个断点,我的Action API要仔细检查,每次按下添加按钮,我都会到达断点,这意味着客户端验证失败.
ASP.Net Core中是否还有其他配置?因为这种方法在MVC 5中运行得很好.
我对Vue相当陌生,并且正在构建一个Web面板,为此我需要一个登录页面。但是,由于该登录名与我正在构建的单页Web面板无关(在外观,导航等方面),并且使用了完全不同的模板,因此我希望将其封装在一个完全不同的静态HTML文件中。
如何Index.Html
在Vue中的默认值旁边提供静态HTML文件?那有可能吗?
假设我有一个MongoDb
或Sql Server
包含大量数据容器,突然间(这很有可能)我需要更改端口!可能是因为突然的安全问题!我需要停止容器并重新启动它在不同的端口上运行。为什么 docker 不允许我这样做,如果我再次运行图像,将创建一个新容器,里面没有数据,这会导致很多混乱。
是否有适当的内置解决方案?我所说的正确是指不需要我备份数据库、将它们移出容器卷并再次恢复它们的解决方案。一些合乎逻辑的东西,例如可以允许我更改转发端口的命令,例如-p 1433:1234 to 27017:1234
.
c# ×3
asp.net ×2
asp.net-core ×2
asp.net-mvc ×2
nats.io ×2
.net-core ×1
apache-kafka ×1
c#-9.0 ×1
docker ×1
grpc ×1
rest ×1
vue.js ×1
websocket ×1