在 Code First MVC 应用程序中查询 AspNet Identity 表
Querying AspNet Identity tables in Code First MVC application
是否可以使用模仿以下模型的 N 层设计基于关键字查询 AspNetUsers table:
Implementing a generic data access layer using Entity Framework
我在 DAL 中创建了以下接口:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Library.Model;
namespace Library.DataAccessLayer
{
...
public interface IAspNetUserRepository : IGenericDataRepository<ApplicationUser>
{
}
public class AspNetUserRepository : GenericDataRepository<ApplicationUser>, IAspNetUserRepository
{
}
}
以及以下 BLL 条目:
using System;
using System.Collections.Generic;
using System.Linq;
using Library.DataAccessLayer;
using Library.Model;
namespace Library.BusinessLogicLayer
{
public interface IBusinessLogicLayer_AspNetUser
{
ApplicationUser GetAspNetUserByAspNetUserID(string _UserID);
}
public class BusinessLogicLayer_AspNetUser : IBusinessLogicLayer_AspNetUser
{
private readonly IAspNetUserRepository _AspNetUserRepository;
public BusinessLogicLayer_AspNetUser()
{
_AspNetUserRepository = new AspNetUserRepository();
}
public BusinessLogicLayer_AspNetUser(IAspNetUserRepository AspNetUserRepository)
{
_AspNetUserRepository = AspNetUserRepository;
}
public ApplicationUser GetAspNetUserByAspNetUserID(string _UserID)
{
return _AspNetUserRepository.GetSingle(u => u.Id.Equals(_UserID));
}
}
}
现在BLL文件中,唯一的Lambda表达式不包含Td所以报错
正确使用的模型是什么。我能找到的唯一信息是 ApplicationUser 继承了 Identity User。
需要做什么或更改什么才能将这些字段添加到 ApplicationUser 模型而不影响数据库的 Code First 部分?
我终于找到了答案。它实际上正盯着我的脸。
只需使用以下代码获取用户对象:
var context = new ApplicationDbContext();
var user = context.Users.{Methods and Lambda expressions};
例如,假设您需要现有的 KNOWN 活动用户的用户名,请使用 User.Identity.Name
。并获取活动用户的 AspNetUsers 数据库记录:
var context = new ApplicationDbContext();
var user = context.Users.SingleOrDefault(u => u.UserName == User.Identity.Name);
是否可以使用模仿以下模型的 N 层设计基于关键字查询 AspNetUsers table:
Implementing a generic data access layer using Entity Framework
我在 DAL 中创建了以下接口:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Library.Model;
namespace Library.DataAccessLayer
{
...
public interface IAspNetUserRepository : IGenericDataRepository<ApplicationUser>
{
}
public class AspNetUserRepository : GenericDataRepository<ApplicationUser>, IAspNetUserRepository
{
}
}
以及以下 BLL 条目:
using System;
using System.Collections.Generic;
using System.Linq;
using Library.DataAccessLayer;
using Library.Model;
namespace Library.BusinessLogicLayer
{
public interface IBusinessLogicLayer_AspNetUser
{
ApplicationUser GetAspNetUserByAspNetUserID(string _UserID);
}
public class BusinessLogicLayer_AspNetUser : IBusinessLogicLayer_AspNetUser
{
private readonly IAspNetUserRepository _AspNetUserRepository;
public BusinessLogicLayer_AspNetUser()
{
_AspNetUserRepository = new AspNetUserRepository();
}
public BusinessLogicLayer_AspNetUser(IAspNetUserRepository AspNetUserRepository)
{
_AspNetUserRepository = AspNetUserRepository;
}
public ApplicationUser GetAspNetUserByAspNetUserID(string _UserID)
{
return _AspNetUserRepository.GetSingle(u => u.Id.Equals(_UserID));
}
}
}
现在BLL文件中,唯一的Lambda表达式不包含Td所以报错
正确使用的模型是什么。我能找到的唯一信息是 ApplicationUser 继承了 Identity User。
需要做什么或更改什么才能将这些字段添加到 ApplicationUser 模型而不影响数据库的 Code First 部分?
我终于找到了答案。它实际上正盯着我的脸。
只需使用以下代码获取用户对象:
var context = new ApplicationDbContext();
var user = context.Users.{Methods and Lambda expressions};
例如,假设您需要现有的 KNOWN 活动用户的用户名,请使用 User.Identity.Name
。并获取活动用户的 AspNetUsers 数据库记录:
var context = new ApplicationDbContext();
var user = context.Users.SingleOrDefault(u => u.UserName == User.Identity.Name);