C# 实体框架(代码优先)&;ASP.net成员资格提供程序

C# 实体框架(代码优先)&;ASP.net成员资格提供程序,c#,asp.net,entity-framework,ef-code-first,code-first,C#,Asp.net,Entity Framework,Ef Code First,Code First,我目前正在尝试使用EF6代码构建一个新的应用程序。首先,我设法根据我的模型创建数据库,没有问题 现在我想做的是使用asp.net成员资格功能。因此,我必须将数据库模式放在数据库中 我该怎么做 互联网上有关于将simplemembershipprovider与EF一起使用的信息,但这非常令人困惑 只是想让你知道我到目前为止做了什么…(下面) 那么,使用EF会员资格的最佳方式是什么 namespace AsoRock.Data.DTOs { public class Customer

我目前正在尝试使用EF6代码构建一个新的应用程序。首先,我设法根据我的模型创建数据库,没有问题

现在我想做的是使用asp.net成员资格功能。因此,我必须将数据库模式放在数据库中

我该怎么做

互联网上有关于将simplemembershipprovider与EF一起使用的信息,但这非常令人困惑

只是想让你知道我到目前为止做了什么…(下面)

那么,使用EF会员资格的最佳方式是什么

namespace AsoRock.Data.DTOs
{
    public class Customer
    {
        [Key]
        public int CustomerId { get; set; }
        public string Title { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Email { get; set; }
        public string HomeNumber { get; set; }
        public string MobileNumber { get; set; }
        public string Gender { get; set; }
        public DateTime Dob { get; set; }
    }

    public class Order
    {
        [Key]
        public int OrderId { get; set; }
        public Address Address { get; set; }
        public Customer Customer { get; set; }
        public List<Product> Products { get; set; }
    }

    public class Product
    {
        [Key]
        public int ProductId { get; set; }
        public string ProductName { get; set; }
        public decimal ProductPrice { get; set; }
    }

    public class Address
    {
        [Key]
        public int AddressId { get; set; }
        public Customer Customer { get; set; }
        public string AddressLine1 { get; set; }
        public string AddressLine2 { get; set; }
        public string City { get; set; }
        public string PostCode { get; set; }
        public string LastUsed { get; set; }
        public bool isDefault { get; set; }
    }


    public class AsoRockContext : DbContext
    {
        public DbSet<Customer> Customers { get; set; }
        public DbSet<Address> Addresses { get; set; }
        public DbSet<Order> Orders { get; set; }
       // public DbSet<Product> Products { get; set; }


        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Entity<Order>().HasMany(p => p.Products).WithMany().Map(m =>
            {
                m.MapLeftKey("OrderId").MapRightKey("ProductId").ToTable("OrderdProducts");
            });

            base.OnModelCreating(modelBuilder);
        }

    }

}
namespace asorck.Data.DTOs
{
公共类客户
{
[关键]
public int CustomerId{get;set;}
公共字符串标题{get;set;}
公共字符串名{get;set;}
公共字符串LastName{get;set;}
公共字符串电子邮件{get;set;}
公共字符串HomeNumber{get;set;}
公共字符串MobileNumber{get;set;}
公共字符串{get;set;}
公共日期时间Dob{get;set;}
}
公共阶级秩序
{
[关键]
公共int-OrderId{get;set;}
公共广播地址{get;set;}
公共客户客户{get;set;}
公共列表产品{get;set;}
}
公共类产品
{
[关键]
public int ProductId{get;set;}
公共字符串ProductName{get;set;}
公共十进制产品价格{get;set;}
}
公共课堂演讲
{
[关键]
public int AddressId{get;set;}
公共客户客户{get;set;}
公共字符串AddressLine1{get;set;}
公共字符串AddressLine2{get;set;}
公共字符串City{get;set;}
公共字符串邮政编码{get;set;}
上次使用的公共字符串{get;set;}
公共布尔值是默认值{get;set;}
}
公共类上下文:DbContext
{
公共数据库集客户{get;set;}
公共数据库集地址{get;set;}
公共数据库集命令{get;set;}
//公共数据库集产品{get;set;}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Entity().HasMany(p=>p.Products).WithMany().Map(m=>
{
m、 MapLeftKey(“OrderId”).MapRightKey(“ProductId”).ToTable(“OrderdProducts”);
});
基于模型创建(modelBuilder);
}
}
}

如果您使用的是MVC 5,则可以更改 公共类上下文:DbContext

将来

public class AsoRockContext : IdentityDbContext<ApplicationUser>

Asp.net MVC 4+附带Asp.net成员资格提供程序。 因此,您的上下文名称是
TestConnection
,然后

在模型目录中的AccountModel中,将
defaultConnection
更改为
TestConnection
这样,它将在数据库中创建成员表

 public UsersContext()
            : base("TestConnection")
        {
        }
要了解更多关于如何实现的信息,请参阅代码、AccountController文件并在顶部找到以下内容 [姓名首字母缩写SampleMembership] 公共类AccountController:控制器


检查
[InitializeSimpleMembership]
属性以了解它是如何实现的。

哪个版本的asp.net mvc?您能给我一些详细信息吗。目前我的解决方案中只有一个项目(AsoRock.Data)
这就是我放置所有EF代码的地方。(先编写代码)那么,如果我创建一个MVC5项目(asorok.Web),你是说我将在asorok.data中调用AsoRockContext,你能给我提供更多信息吗。我目前在我的解决方案中只有一个项目(asorok.Data),这就是我放置所有EF代码的地方。(首先编码)那么,如果我创建一个MVC5项目(AsoRock.Web),你是说我会在AsoRock.Data中调用AsoRockContext,这对更新模型时自动创建数据库有什么影响@ASGYou可以将上下文(和数据库集)放在MVC项目中,然后添加对Asorrock.Data项目的引用当您说将上下文和数据库集放在MVC项目中时,我想您指的是创建数据库的所有代码……对吗?那么,如果我这样做了,我就不需要一个.data项目了。这取决于项目的规模。如果要在其他地方重用数据类,请保留它。只要您的MVC项目引用它,您就可以使用任何其他项目创建您的上下文和数据库集
 public UsersContext()
            : base("TestConnection")
        {
        }