나는 내가 사용 등 엔티티 프레임 워크는 프로그램 연결 문자열 및 패키지 콘솔 관리자 Update-Database
또는 Add-Migration
프로그래밍 연결 문자열
에 문제가 사용자가 필요에 따라 구성을 변경할 수 있도록 내 프로젝트의 파일은 configuration.xml
입니다. 나는이 같은 결과를 얻었다 업데이트-Database 명령을 사용하려고하면
문제는
... 프로그래밍 방식의 연결 문자열입니다.
PM> Update-Database -Verbose
Using StartUp project 'acme'.
Using NuGet project 'acme'.
Target database: 'acme.Models.DbContext' (DataSource: .\SQLEXPRESS, Provider: System.Data.SqlClient, Origin: Convention).
Using Migrationens: [..., ..., ..., ..., ...].
Appending migration: ....
데이터 소스가 .\SQLEXPRESS
이 아닙니다. 예를 들어 My-SQLServer
입니다.
연결 문자열입니다.
Data Source=My-SQLServer\TS;initial catalog=acme;integrated security=True;multipleactiveresultsets=True;application name=EntityFramework
원본 구성 설정 항목은 다음과 같습니다. DbContext는
<connectionStrings>
<!--<add name="DbContext" connectionString="Data Source=My-SQLServer\TS;initial catalog=acme;integrated security=True;multipleactiveresultsets=True;application name=EntityFramework" providerName="System.Data.SqlClient" />-->
</connectionStrings>
...
using System;
using System.Data;
using System.Data.Entity.Core.Objects;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Linq;
using System.Linq.Expressions;
using System.Collections.Generic;
using System.Data.Entity.Core.Metadata.Edm;
using System.Data.Entity.ModelConfiguration.Conventions;
using System.Data.Entity.Core.EntityClient;
using System.Data.Common;
using System.Data.SqlClient;
namespace acme.Models
{
public class DbContext : DbContext, IDbContextFactory<DbContext>
{
public DbContext(string nameOrConnectionString)
: base(nameOrConnectionString)
{
Database.SetInitializer<DbContext>(new MigrateDatabaseToLatestVersion<DbContext, acme.Migrations.Configuration>());
}
public DbContext()
: base()
{
Database.SetInitializer<DbContext>(new MigrateDatabaseToLatestVersion<DbContext, acme.Migrations.Configuration>());
}
public DbSet<Base> Base { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<User>().Map(m => m.MapInheritedProperties());
base.OnModelCreating(modelBuilder);
}
public DbContext Create()
{
/* First try (not working) */
EntityConnectionStringBuilder ecsb = new EntityConnectionStringBuilder();
//ecsb.ProviderConnectionString = acme.ConfigFile.GetValue("ConnectionString");
ecsb.Provider = "System.Data.SqlClient";
ecsb.ProviderConnectionString = @"application name=";
/* Second try https://msdn.microsoft.com/en-us/library/bb738533%28v=vs.110%29.aspx (not working) */
// Initialize the connection string builder for the
// underlying provider.
SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder();
// Set the properties for the data source.
sqlBuilder.DataSource = @"My-SQLServer\TS";
sqlBuilder.InitialCatalog = "acme";
sqlBuilder.IntegratedSecurity = true;
sqlBuilder.MultipleActiveResultSets = true;
sqlBuilder.ApplicationName = "EntityFramework";
// Build the SqlConnection connection string.
string providerString = sqlBuilder.ToString();
// Initialize the EntityConnectionStringBuilder.
EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder();
//Set the provider name.
entityBuilder.Provider = "System.Data.SqlClient";
// Set the provider-specific connection string.
entityBuilder.ProviderConnectionString = providerString;
return new DbContext(entityBuilder.ToString());
}
}
}
난 당신이 날 도울 수 있기를 바랍니다 :) 사전에
감사합니다!