我不明白为什么我的保证金没有应用在这个例子中。看来前路够坎坷了。
应用程序模板:
<my-component class="my-class">Test</my-component>
<div>Some Conent</div>
Run Code Online (Sandbox Code Playgroud)
应用程序风格:
.my-class { margin-bottom: 30px; }
div { background-color: red; }
Run Code Online (Sandbox Code Playgroud)
组件模板:
<div><ng-content></ng-content></div>
Run Code Online (Sandbox Code Playgroud)
div获得红色背景,但两者之间没有边距;
Mongodb 有一个 FindAsync 和一个 Find。我知道如果您要传递光标,这可能会有用,但我不完全理解它如何与自己的 ToListAsync 一起使用。这里有两个查询。一个比另一个性能更好吗?特别是查询 200-1000 个文档。
public async Task<List<MongoUser>> GetUsersAsync(IEnumerable<Guid> userGuids)
{
var filter = Builders<MongoUser>.Filter.In(u => u.Guid, userGuids);
var resultCursor = await Db.GetCollection<MongoUser>("Users").FindAsync(filter);
var users = await resultCursor.ToListAsync();
return users;
}
public async Task<List<MongoUser>> GetUsersAsync2(IEnumerable<Guid> userGuids)
{
var filter = Builders<MongoUser>.Filter.In(u => u.Guid, userGuids);
var users = await Db.GetCollection<MongoUser>("Users").Find(filter).ToListAsync();
return users;
}
Run Code Online (Sandbox Code Playgroud)
这个问题类似,供参考
但是,我认为我的问题的答案并不明确。通过评论,询问者说“无论哪种方式,我都加载了一个文档”,而答复是“对于一个文档,查找看起来更好,因为你不使用光标。” 我相信这个问题的线索就到此结束了。
答案令人困惑,因为他说“Find 和 FindAsync 都允许构建具有相同性能的异步查询”和“FindAsync 返回游标,它不会立即加载所有文档,并为您提供从数据库游标中一一检索文档的接口” .当查询结果很大时,这很有帮助。” 也许他也指的是一些小问题。
我希望了解 MongoDb 是否仅使用 ToListAsync() 表现良好,在整个命令完成之前不阻塞线程,或者是否有必要使用 FindAsync() 强制 MongoDb 在构建时释放线程查询或 Find() 本身所做的任何事情。
我有一个项目,我想使用.net core 2.0,我相信它是netcoreapp2.0.它还使用了.net 4.6.1创建的nuget包.我可以控制这个nuget包,如果需要可以改变它.它确实有netstandards 2.0作为nuget包导入.
如果我包含在我的cproj文件中:
<TargetFramework>netcoreapp2.0</TargetFramework>
Run Code Online (Sandbox Code Playgroud)
我收到这个警告:
包'Terryberry.Roes.Common 2017.9.29-mongo'使用'.NETFramework,Version = v4.6.1'而不是项目目标框架'.NETCoreApp,Version = v2.0'进行了恢复.此软件包可能与您的项目不完全兼容.
以及有关system.net.sockets从4.3降级到4.1的错误.4.6.1 nuget包有System.Net.Sockets 4.3所以我不确定它为什么要降级.
确切的错误供参考:
检测到的包降级:System.Net.Sockets从4.3.0升级到4.1.0.直接从项目引用包以选择不同的版本.MyNetCoreProject(> = 2017.2.0) - > Microsoft.VisualStudio.Web.BrowserLink(> = 1.1.2) - > Microsoft.Extensions.FileProviders.Physical(> = 1.1.1) - > NETStandard.Library(> = 1.6. 1) - > System.Net.Sockets(> = 4.3.0)MyNetCoreProject(> = 2017.2.0) - > Microsoft.VisualStudio.Web.BrowserLink(> = 1.1.2) - > System.Net.Sockets(> = 4.1.0)MyNetCoreProject
我尝试了两种目标:
<TargetFrameworks>net461;netcoreapp2.0</TargetFrameworks>
Run Code Online (Sandbox Code Playgroud)
这给了我一些警告:
使用'.NETFramework,Version = v4.6.1'而不是项目目标框架'.NETCoreApp,Version = v2.0'恢复包'My461NugetPackage'.此软件包可能与您的项目不完全兼容.
这也让我感到困惑,因为现在我添加了net461,它说要用.NetCoreApp构建它
降级System.Net.Sockets仍然存在错误
然后我决定我愿意尝试net461.只是为了看它是否会编译.确实如此,但是我遇到了运行时错误.
<TargetFramework>net461</TargetFramework>
Run Code Online (Sandbox Code Playgroud)
这给了我:
未处理的异常:System.TypeLoadException:方法'Microsoft.AspNetCore.Hosting.WebHostBuilder'中的方法'ConfigureAppConfiguration'来自程序集'Microsoft.AspNetCore.Hosting,Version = 1.1.2.0,Culture = neutral,PublicKeyToken = adb9793829ddae60'没有实现.
我已经尝试过做一些研究,但随着.net核心不断发展,有很多旧的/过时的信息.我无法弄清楚这一点.任何指导将不胜感激.
我想在 Mongo 中进行批量更新插入。基本上我从供应商那里得到了一个对象列表,但我不知道哪些是我之前得到的(并且需要更新),哪些是新的。我可以一一进行更新插入,但 UpdateMany 不适用于更新插入选项。
因此,我采取了选择文档、用 C# 进行更新并进行批量插入的方法。
public async Task BulkUpsertData(List<MyObject> newUpsertDatas)
{
var usernames = newUpsertDatas.Select(p => p.Username);
var filter = Builders<MyObject>.Filter.In(p => p.Username, usernames);
//Find all records that are in the list of newUpsertDatas (these need to be updated)
var collection = Db.GetCollection<MyObject>("MyCollection");
var existingDatas = await collection.Find(filter).ToListAsync();
//loop through all of the new data,
foreach (var newUpsertData in newUpsertDatas)
{
//and find the matching existing data
var existingData = existingDatas.FirstOrDefault(p => p.Id == newUpsertData.Id);
//If there …Run Code Online (Sandbox Code Playgroud)