- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在做一个数据库优先的项目。
我在 VS2013 中创建了一个新的 MVC5 站点。
我创建了一个具有电子邮件属性的 applicationUser:
public class ApplicationUser : IdentityUser
{
public String EMail { get; set; }
}
然后我在已经创建的 AspNetUsers 表中创建了一个 EMail 字段。然后,我创建了一个继承自 Microsoft.AspNet.Identity.EntityFramework.UserStore 的域特定用户存储,并实现了另外两个功能:FindByEmail 和 FindByEmailAsync。
FindByEmail 看起来像这样:
public ApplicationUser FindByEMail(String email)
{
var context = base.Context;
String commandText = "Select * from AspNetUsers Where EMail = @email";
var query = context.Database.SqlQuery(typeof(ApplicationUser), commandText,new SqlParameter("@email",email));
var result = query.ToListAsync().Result.ToArray().GetValue(0);
return result as ApplicationUser;
}
使用此方法我的单元测试运行正常。我现在正在尝试实现异步方法并返回一个任务。我正在尝试在没有 for..eaching 任务并将对象转换为 ApplicationUser 的情况下执行此操作。我脑子里的 F# 想做一个 Seq.Map(fun u -> (ApplicationUser)u a. C# 有等价物吗?
我是否以正确的方式解决问题?我受限,无法遵循 MSDN 的示例,因为我无法做到代码优先。
最佳答案
首先,对于同步版本,最好首先避免异步调用。您可以将查询写成:
var query = context.Database.SqlQuery<ApplicationUser>(commandText, new SqlParameter("@email",email));
return query.First();
这避免了“同步优于异步”(使用 ToListAsync()
后接 Result
调用)。
对于异步版本,您只需使用:
public async Task<ApplicationUser> FindByEMailAsync(String email)
{
var context = base.Context;
String commandText = "Select * from AspNetUsers Where EMail = @email";
var query = context.Database.SqlQuery<ApplicationUser>(commandText, new SqlParameter("@email",email));
var data = await query.ToListAsync();
return data.First();
}
旁注:
The F# in my brain wants to do a Seq.Map(fun u -> (ApplicationUser)u a. Is there an equiv for C#?
等效的 C# 将使用 Enumerable.Select
通过a.Select(u => (ApplicationUser)u);
也就是说,使用 a.Cast<ApplicationUser>().First()
在这种特定情况下可能更合适。
另一个旁注:
如果找不到电子邮件,这些方法就会出现问题,因为它们假设您总是会得到一个匹配的结果。您可以使用 FirstOrDefaultAsync()
来处理它和 FirstOrDefault()
而不是 First
,并检查空响应。我故意没有这样写,因为我试图模仿你原来方法的行为(它也会抛出,虽然你的抛出 IndexOutOfRangeException
,并且头脑会提高 InvalidOperationException
。)
关于c# - 自定义 Microsoft.AspNet.Identity.EntityFramework.UserStore<TUser>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21176012/
尝试在 ASP.NET Core 2.0 中实现身份。我在解决这个问题时遇到了很多问题。 Startup.cs public class Startup { public Startup(IC
我已实现 Identity在 Asp.Net.Core MVC 3因为我们已经有了要使用的数据库表。调用下面的方法时出现错误,它们都发生在 UserManager 中在对方法的同一调用中。查看此方法的
我正在尝试使用以下内容自定义 asp.net 身份实体: public class User : IdentityUser public class UserClaim : IdentityUserC
我正在尝试自定义 ASP.NET Identity Core,但出现以下异常:(它似乎构建良好,但甚至在启动之前就崩溃了) Unhandled Exception: System.Reflection
当 Tuser 中的身份验证代码不为空时,这意味着用户没有在 24 小时内登录该站点,因此我必须删除这些行。 这是我写的查询,但没有正确删除 DELETE FROM tusers WHERE aut
我正在尝试为 asp.net Identity 2.0 实现自己的 DAL,并提供我需要的功能。我不需要帐户锁定功能。但是当我尝试打电话时 var result = await SignInManag
我有一个具有以下签名的 Controller : [Route("api/[controller]")] [ApiController] public class UsersController :
我正在尝试使用我需要的功能为 asp.net Identity 2.0 实现自己的 DAL。我不需要帐户锁定功能。但是当我尝试打电话时 var result = await SignInManager
我正在做一个数据库优先的项目。 我在 VS2013 中创建了一个新的 MVC5 站点。 我创建了一个具有电子邮件属性的 applicationUser: public class Applicatio
我正在为 IUserStore 编写自定义实现。创建方法的签名是: public async virtual Task CreateAsync(TUser user) 考虑到 Microsoft.As
在 visual studio 为 Web Api 2 项目的 ASP.NET 身份验证生成的模板项目中,我添加了一个类 ApplicationUserStore(这是我的自定义用户存储) publi
...我们只在 Microsoft.AspNet.Identity 内部。 (我们甚至没有查看 Microsoft.AspNet.Identity.EntityFramework 的基本实现。) Us
我有这个代码: public class BaanUserStore : IUserStore, IUserPasswordStore where TUser : Microsoft.AspNet.I
我正在使用 ASP.NET Core 2.1 身份。我已经覆盖了 IdentityUser,因为我需要为用户添加一些额外的属性。 在 Startup.cs 中 services.AddDefaultI
我注意到这个类有一个@符号。 我知道 $ 符号表示内部类。 那么,@ 是什么意思? 最佳答案 它只是类名和对象哈希码的十六进制表示形式之间的任意分隔符。正在 TUser 对象上调用 toString。
查看 ASP.NET Identity(ASP.NET 中的新成员身份实现),我在实现自己的 UserStore 时遇到了这个接口(interface)。 : //Microsoft.AspNet.I
我正在使用 Amazon.AspNetCore.Identity.Cognito 并且在使用 UserManager 的“ConfirmEmailAsync(TUser user, string to
我正在尝试使用 UserManager 更新用户但出现以下错误 The instance of entity type 'UserEntity' cannot be tracked because a
我是一名优秀的程序员,十分优秀!