MVC3 +简单成员:通过实体框架访问用户配置文件

时间:2014-05-15 00:07:22

标签: asp.net-mvc-3 entity-framework simplemembership

我在我的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();

谢谢!

2 个答案:

答案 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。