我在我的MVC3应用程序中使用SimpleMembership.MVC3包,我希望能够通过实体框架从表中访问用户
在使用MVC4执行此操作的示例中,您只需创建一个POCO来镜像生成的User表,在DbContext实现中添加DbSet,然后像往常一样查询DbSet,即:context 。用户。
即使表格中有行,此集合也总是为我返回0项。我究竟做错了什么?这是我到目前为止所得到的:
[Table("User")]
public class User
{
public int Id { get; set; }
public string UserName { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
public class TestContext : DbContext
{
public DbSet<User> Users { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
base.OnModelCreating(modelBuilder);
}
}
在我的服务中:
model.Accounts = context.Users.ToList();
谢谢!
答案 0 :(得分:0)
您不创建镜像User表的POCO,以便直接从EF访问它。创建项目时,Internet模板已经创建了一个POCO,您可以customize as described here。同一篇文章还介绍了如何通过直接访问EF来访问用户信息。您没有创建自己的上下文,您已经使用了一个上下文。以下是该文章的代码段。
var context = new UsersContext();
var username = User.Identity.Name;
var user = context.UserProfiles.SingleOrDefault(u => u.UserName == username);
var email = user.Email;
该文章还提供了下载源代码的链接,该源代码演示了如何执行此操作的详细信息。
答案 1 :(得分:0)
我完全规避了会员类,并实施了纯粹的EF会员制。我利用System.Web.Helpers Crypto帮助程序来处理密码散列,并在需要时创建AuthCookie。