1

我首先使用实体​​框架代码。

DataBaseName - 我想在 SQL Server 中创建一个数据库。

web.config

<configuration>
  <connectionStrings>
    <add name="DataContext" 
         providerName="System.Data.SqlClient" 
         connectionString="Data Source=USER\SQLEXPRESS;Initial Catalog=DataBaseName;Integrated Security=True;Pooling=False;User Instance = False" />

global.asax

 protected override void OnApplicationStarted()
 {
     base.OnApplicationStarted();

     Database.SetInitializer(new DataContextInitializer());
 }

DataContextInitializer

namespace CodeFirstMembershipSharp
{
    public class DataContextInitializer : DropCreateDatabaseAlways<DataContext>
    {
        protected override void Seed(DataContext context)
        {
            MembershipCreateStatus Status;
            Membership.CreateUser("Demo", "123456", null, null, null, true, out Status);
            Roles.CreateRole("Admin");
            Roles.AddUserToRole("Demo", "Admin");
        }
    }
}

DataContext

public class DataContext : DbContext
{
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Bid>()
            .HasRequired(a => a.Auction)
            .WithMany()
            .HasForeignKey(x => x.AuctionId).WillCascadeOnDelete(false);

        modelBuilder.Entity<Bid>()
           .HasRequired(a => a.User)
           .WithMany()
           .HasForeignKey(x => x.UserId).WillCascadeOnDelete(false);
    }

    public DbSet<User> Users { get; set; }
    public DbSet<Role> Roles { get; set; }
    public DbSet<Auction> Auctions { get; set; }
    public DbSet<Page> Pages { get; set; }
    public DbSet<Bid> Bids { get; set; }
}

但是没有创建数据库。我忘记写什么了?

4

2 回答 2

1

Database.SetInitializer 设置初始化程序但不运行初始化。之后Database.SetInitializer需要添加:

using (var context = new DataContext())
{
    context.Database.Initialize(false);
}
于 2012-06-30T11:20:52.660 回答
0

我没有看到您在种子方法中添加新数据,我想您需要将它们添加到 datacontext 以便实体框架将创建数据库并保存数据,尝试如下

namespace CodeFirstMembershipSharp
{
    public class DataContextInitializer : DropCreateDatabaseAlways<DataContext>
    {
        protected override void Seed(DataContext context)
        {
            context.Users.Add(new User{name = "Demo", password = "123456"});
            context.Roles.Add(New Role("Admin"));
        }
    }
}
于 2012-06-30T11:30:34.770 回答