在签署用户时我正在设置IsPersistent,如何读取该值?
var identity = await UserManager.CreateIdentityAsync(appUser, DefaultAuthenticationTypes.ApplicationCookie);
HttpContext.GetOwinContext().Authentication.SignIn(new AuthenticationProperties() { IsPersistent = false }, identity);
Run Code Online (Sandbox Code Playgroud) 我试图避免在使用 mongo c# 驱动程序 (v2.7.2) 聚合和投影时将模型手动映射到视图模型。
而不是手动进行投影映射
var projection = Builders<Model>.Projection.Expression(x => new ViewModel {
A = x.A,
B = x.B
// ...more properties
});
Run Code Online (Sandbox Code Playgroud)
我想使用 AutoMapper 进行映射
var projection = Builders<Model>.Projection.Expression(x => _mapper.Map<ViewModel>(x));
Run Code Online (Sandbox Code Playgroud)
事实上,当我只是在像这样的 find() 操作上使用它时,这是有效的
var result = mongoCollection
.Find(Builders<Model>.Filter.Empty)
.Project(projection)
.ToList();
Run Code Online (Sandbox Code Playgroud)
但是当我在aggregate()上使用相同的投影时
var result = mongoCollection
.Aggregate()
.Project(projection)
.ToList();
Run Code Online (Sandbox Code Playgroud)
它抛出一个 ArgumentOutOfRangeException
发生异常:CLR/System.ArgumentOutOfRangeException 抛出异常:System.Private.CoreLib.dll 中的“System.ArgumentOutOfRangeException”:“索引超出范围。” 必须为非负数且小于集合的大小。
首先我想知道为什么使用 AutoMapper 进行映射适用于 find() 而不适用于aggregate()?
另外,是否可以在这种情况下以某种方式使用 AutoMapper,或者是否有其他方法可以映射到目标类而无需显式反序列化结果客户端?