小编Arr*_*rrr的帖子

延迟加载与预先加载

实体框架中的延迟加载是加载和访问相关实体时发生的默认现象.然而,急切加载是指强制加载所有这些关系的做法.我遇到的问题是,在什么情况下,急切加载可能比延迟加载更有益.问这个,因为很明显延迟加载更加资源友好,即使我们使用这个ToList()方法,我们仍然可以利用延迟加载行为.但是,我认为可能延迟加载会增加对实际数据库的请求数量,这也许是开发人员使用该Inlcude方法强制加载所有关系的原因.例如,在MVC 5中使用Visual Studio自动搭建时,在控制器中自动创建的Index方法总是使用Eager Loading,而且我总是有一个问题,即在这种情况下Microsoft默认使用Eager Loading.

如果有人向我解释,在什么情况下,渴望加载比延迟加载更有益,我会很感激,为什么我们一直使用它,同时有更多的资源友好作为延迟加载.

c# entity-framework entity-framework-6

63
推荐指数
6
解决办法
7万
查看次数

AutoValidateAntiForgeryToken与ValidateAntiForgeryToken

我正试图通过提供反伪造令牌来保护一个针对副脚本的post方法但注意到,在.Net Core中还有另一个名为as的属性AutoAntiForgeryToken.XML注释和在线搜索没有提供有关此新属性的大量信息.

任何有关新属性的帮助和描述都将非常感激.

asp.net asp.net-core-mvc .net-core asp.net-core

16
推荐指数
1
解决办法
5142
查看次数

gRPC 与 NATS 或 Kafka 相比有什么意义吗?

一直以来,说到微服务架构,我首先想到的就是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吗?它取代了什么?

rest websocket apache-kafka grpc nats.io

12
推荐指数
2
解决办法
2万
查看次数

NATS 对象存储或键值存储与 Redis 缓存

我们目前在 NATS 后面使用 Redis 进行缓存,这是标准做法。然而,我遇到了这样的想法:我们可以利用 NATS 中的对象存储或键值功能来本地实现缓存。然而,我知道:

  1. Key Value 专为稳定的消息流而开发
  2. 对象存储是为大数据分块而开发的,因此我们不需要更改最大 1 Mg 消息配置

另一方面,所有这些都具有数据的 TTL,这是有利的。

我的问题是,用 JetStream 替换 NATS 后面的当前 Redis 缓存在技术上是否正确?

我们正在处理的一些可能的场景:

  1. 读取大量数据并对当前在 Redis 中完成的数据应用分页,但我正在考虑使用对象存储来实现这一点。
  2. 基本缓存,从数据库读取一次并将读取的值缓存30秒

nats.io nats-jetstream

10
推荐指数
1
解决办法
2282
查看次数

VS Code IntelliSense 在 C# 9.0 上失败

C# 9 已经有一段时间了,现在我才注意到 SDK 5 已经正式发布。出于这个原因,我切换到 C# 9 和 .Net 5,但不幸的是,“ms-dotnettools.csharp”(C# 的官方 VS Code 扩展)没有语法突出显示和对 C# 9 的适当 IntelliSense 支持。例如,它没有突出显示record类型,或者当我使用顶级语句时,它会将其与编译时错误混淆。但是,该项目始终编译。

在 VS Code 中进行编码时,是否有任何解决方法可以解决这些问题并享受令人惊叹的 C# 9.0?

c# visual-studio-code c#-9.0

9
推荐指数
1
解决办法
1141
查看次数

EF Core:Scaffold DbContext一直都失败了

官方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)

c# asp.net-mvc entity-framework

8
推荐指数
1
解决办法
4638
查看次数

缺少脚手架ASP.Net核心

传统上,Visual Studio中常常使用脚手架来加速添加控制器,区域,视图等.在我安装ASP.NET Core之后,我注意到所有这些都消失了,这很可怕(特别是当你想添加一个新的时候)区域,手动完成工作将是一个可怕的颈部疼痛).

有没有办法把它们带回来?为什么微软团队会做出如此糟糕的决定?

在此输入图像描述

asp.net-core-mvc visual-studio-2015 asp.net-core

8
推荐指数
1
解决办法
3349
查看次数

ASP.Net核心:不显眼的验证不起作用

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中运行得很好.

asp.net asp.net-mvc asp.net-core-mvc asp.net-core-1.0

7
推荐指数
2
解决办法
7211
查看次数

VueJS:使用静态HTML文件

我对Vue相当陌生,并且正在构建一个Web面板,为此我需要一个登录页面。但是,由于该登录名与我正在构建的单页Web面板无关(在外观,导航等方面),并且使用了完全不同的模板,因此我希望将其封装在一个完全不同的静态HTML文件中。

如何Index.Html在Vue中的默认值旁边提供静态HTML文件?那有可能吗?

vue.js

7
推荐指数
1
解决办法
3687
查看次数

Docker:在不丢失数据的情况下更改已创建容器上的端口绑定

假设我有一个MongoDbSql Server包含大量数据容器,突然间(这很有可能)我需要更改端口!可能是因为突然的安全问题!我需要停止容器并重新启动它在不同的端口上运行。为什么 docker 不允许我这样做,如果我再次运行图像,将创建一个新容器,里面没有数据,这会导致很多混乱。

是否有适当的内置解决方案?我所说的正确是指不需要我备份数据库、将它们移出容器卷并再次恢复它们的解决方案。一些合乎逻辑的东西,例如可以允许我更改转发端口的命令,例如-p 1433:1234 to 27017:1234.

docker

7
推荐指数
1
解决办法
1万
查看次数