0

simplemembership 기능을 확장하려고하는데 테이블을 만들고 update-database를 사용하여 시드 메소드에서 채우는 데 문제가 있습니다. 자신에 의해 설계되었습니다SimpleMembership 테이블이 원격 서버에 생성되지 않음 (로컬 작동) EF MVC4

update-database -ConnectionStringName "remote" -Verbose 

만 테이블이되고 있습니다 지역 명령

update-database 

내가이 명령을 사용하여 서버에이를 업데이트하려고하면 제대로 등 webpages_Membership 를 포함한 모든 테이블을 생성하고이를 채우기 생성 및 채워집니다.

난 서버에서이 Heres는 무엇을 :

PM> update-database -ConnectionStringName "remote" -Verbose 
Using StartUp project 'Phones'. 
Using NuGet project 'Phones'. 
Specify the '-Verbose' flag to view the SQL statements being applied to the target database. 
Target database is: 'databasename' (DataSource: tcp:server,port, Provider: System.Data.SqlClient, Origin: Explicit). 
No pending code-based migrations. 
Applying automatic migration: 201407232047491_AutomaticMigration. 
CREATE TABLE [dbo].[UserProfile] (
    [UserId] [int] NOT NULL IDENTITY, 
    [UserName] [nvarchar](max), 
    [FirstName] [nvarchar](max), 
    [LastName] [nvarchar](max), 
    [Email] [nvarchar](max), 
    [Balance] [float] NOT NULL, 
    [Enabled] [bit] NOT NULL, 
    CONSTRAINT [PK_dbo.UserProfile] PRIMARY KEY ([UserId]) 
) 
CREATE TABLE [dbo].[Orders] (
    [OrderId] [int] NOT NULL IDENTITY, 
    [Name] [nvarchar](max), 
    [IMEI] [nvarchar](max), 
    [UnlockCode] [nvarchar](max), 
    [UserProfile_UserId] [int], 
    [Phone_PhoneId] [int], 
    CONSTRAINT [PK_dbo.Orders] PRIMARY KEY ([OrderId]) 
) 
CREATE TABLE [dbo].[Phones] (
    [PhoneId] [int] NOT NULL IDENTITY, 
    [Manufacturer] [nvarchar](max), 
    [Model] [nvarchar](max), 
    [UnlockPrice] [float] NOT NULL, 
    CONSTRAINT [PK_dbo.Phones] PRIMARY KEY ([PhoneId]) 
) 
CREATE INDEX [IX_UserProfile_UserId] ON [dbo].[Orders]([UserProfile_UserId]) 
CREATE INDEX [IX_Phone_PhoneId] ON [dbo].[Orders]([Phone_PhoneId]) 
ALTER TABLE [dbo].[Orders] ADD CONSTRAINT [FK_dbo.Orders_dbo.UserProfile_UserProfile_UserId] FOREIGN KEY ([UserProfile_UserId]) REFERENCES [dbo].[UserProfile] ([UserId]) 
ALTER TABLE [dbo].[Orders] ADD CONSTRAINT [FK_dbo.Orders_dbo.Phones_Phone_PhoneId] FOREIGN KEY ([Phone_PhoneId]) REFERENCES [dbo].[Phones] ([PhoneId]) 
CREATE TABLE [dbo].[__MigrationHistory] (
    [MigrationId] [nvarchar](255) NOT NULL, 
    [Model] [varbinary](max) NOT NULL, 
    [ProductVersion] [nvarchar](32) NOT NULL, 
    CONSTRAINT [PK_dbo.__MigrationHistory] PRIMARY KEY ([MigrationId]) 
) 
BEGIN TRY 
    EXEC sp_MS_marksystemobject 'dbo.__MigrationHistory' 
END TRY 
BEGIN CATCH 
END CATCH 
[Inserting migration history record] 
Running Seed method. 

그리고 현지에서 :

PM> update-database -Verbose 
Using StartUp project 'Phones'. 
Using NuGet project 'Phones'. 
Specify the '-Verbose' flag to view the SQL statements being applied to the target database. 
Target database is: 'phones' (DataSource: localhost\SQLEXPRESS, Provider: System.Data.SqlClient, Origin: Configuration). 
No pending code-based migrations. 
Applying automatic migration: 201407232046599_AutomaticMigration. 
CREATE TABLE [dbo].[UserProfile] (
    [UserId] [int] NOT NULL IDENTITY, 
    [UserName] [nvarchar](max), 
    [FirstName] [nvarchar](max), 
    [LastName] [nvarchar](max), 
    [Email] [nvarchar](max), 
    [Balance] [float] NOT NULL, 
    [Enabled] [bit] NOT NULL, 
    CONSTRAINT [PK_dbo.UserProfile] PRIMARY KEY ([UserId]) 
) 
CREATE TABLE [dbo].[Orders] (
    [OrderId] [int] NOT NULL IDENTITY, 
    [Name] [nvarchar](max), 
    [IMEI] [nvarchar](max), 
    [UnlockCode] [nvarchar](max), 
    [UserProfile_UserId] [int], 
    [Phone_PhoneId] [int], 
    CONSTRAINT [PK_dbo.Orders] PRIMARY KEY ([OrderId]) 
) 
CREATE TABLE [dbo].[Phones] (
    [PhoneId] [int] NOT NULL IDENTITY, 
    [Manufacturer] [nvarchar](max), 
    [Model] [nvarchar](max), 
    [UnlockPrice] [float] NOT NULL, 
    CONSTRAINT [PK_dbo.Phones] PRIMARY KEY ([PhoneId]) 
) 
CREATE INDEX [IX_UserProfile_UserId] ON [dbo].[Orders]([UserProfile_UserId]) 
CREATE INDEX [IX_Phone_PhoneId] ON [dbo].[Orders]([Phone_PhoneId]) 
ALTER TABLE [dbo].[Orders] ADD CONSTRAINT [FK_dbo.Orders_dbo.UserProfile_UserProfile_UserId] FOREIGN KEY ([UserProfile_UserId]) REFERENCES [dbo].[UserProfile] ([UserId]) 
ALTER TABLE [dbo].[Orders] ADD CONSTRAINT [FK_dbo.Orders_dbo.Phones_Phone_PhoneId] FOREIGN KEY ([Phone_PhoneId]) REFERENCES [dbo].[Phones] ([PhoneId]) 
CREATE TABLE [dbo].[__MigrationHistory] (
    [MigrationId] [nvarchar](255) NOT NULL, 
    [Model] [varbinary](max) NOT NULL, 
    [ProductVersion] [nvarchar](32) NOT NULL, 
    CONSTRAINT [PK_dbo.__MigrationHistory] PRIMARY KEY ([MigrationId]) 
) 
BEGIN TRY 
    EXEC sp_MS_marksystemobject 'dbo.__MigrationHistory' 
END TRY 
BEGIN CATCH 
END CATCH 
[Inserting migration history record] 
Running Seed method. 

종자 방법으로 내 클래스 :

:

internal sealed class Configuration : DbMigrationsConfiguration<Phones.Models.UsersContext> 
    { 
     public Configuration() 
     { 
      AutomaticMigrationsEnabled = true; 

     } 

     protected override void Seed(Phones.Models.UsersContext context) 
     { 
      if (!WebMatrix.WebData.WebSecurity.Initialized) 
      { 
       WebSecurity.InitializeDatabaseConnection(
        "DefaultConnection", 
        "UserProfile", 
        "UserId", 
        "UserName", autoCreateTables: true); 
      } 
      if (!Roles.RoleExists("Administrator")) 
       Roles.CreateRole("Administrator"); 
      if (!Roles.RoleExists("User")) 
       Roles.CreateRole("User"); 

      if (!WebSecurity.UserExists("Admin")) 
       WebSecurity.CreateUserAndAccount(
        "Admin", 
        "pass", 
        new { FirstName = "testname", LastName = "testsurname", Email = "[email protected]", Balance = 0, Enabled = true }); 

      if (!Roles.GetRolesForUser("Admin").Contains("Administrator")) 
       Roles.AddUsersToRoles(new[] { "Admin" }, new[] { "Administrator" }); 
     } 
    } 

여기 내 UsersContext 클래스의

public class UsersContext : DbContext 
    { 
     public UsersContext() 
      : base("DefaultConnection") 
     { 
     } 

     public DbSet<UserProfile> UserProfiles { get; set; } 
     public DbSet<Order> Orders { get; set; } 

     public DbSet<Phone> Phones { get; set; } 

    } 

도움을 주시면 감사하겠습니다. 안녕하십니까, Martin

답변

0

원격 서버에서 Visual Studio 명령 프롬프트를 사용해 보셨습니까?

Visual Studio 명령 프롬프트를 여는 경우 (시작시 Visual Studio 명령 프롬프트를 입력해야합니다). 다음 명령 프롬프트에서

:

Aspnet_regsql.exe 

이 asp.net 웹 사이트의 회원 스키마를 작성하도록 설계된 프로그램을 엽니 다. 이 응용 프로그램에서도 데이터베이스에 원격으로 연결할 수 있습니다.

응용 프로그램이 열립니다 응용 프로그램 서비스

  • 에 대한

    • 클릭 구성의 SQL 서버는 다음 히트 당신은 당신이 원격 또는하지 연결하려는 여부에하라는 메시지가 표시됩니다. Remote connection example

    • 은 자격 증명은 다음 명중 입력합니다. 연결중인 데이터베이스와 연결된 서버의 설정 요약을 볼 수 있습니다. 이것이 모두 ok이고 다음에 히트를 확인하십시오.
    • 지침에 따라 멤버십에 필요한 ASP_ 데이터베이스 (Roles 등)를 설치합니다.
  • 0

    이러한 방식으로 update-database 명령을 사용하는 것은 개발 중 바로 가기로 의도되었으므로 테스트 또는 프로덕션을 위해 원격 서버를 설정하는 데 사용하지 않아야합니다.원격 서버의 경우 update-database 명령과 함께 script 매개 변수를 사용하여 기존 데이터베이스를 작성하거나 업데이트 한 후 해당 서버에서 스크립트를 실행하는 sql 스크립트를 작성하십시오.