0

'da başlayan belirtime uymuyor Ben farklı bölümler için birden çok katman kullandığım "Soğan gibi" yapıya sahip bir proje kurmaya çalışıyorum proje (DAL, BL, WEB). İlk önce tüm dosyalarımın, her şeyin bir cazibe gibi çalıştığı EF'e olan bağımlılıkları da içeren tek bir projede vardı.EF 7 dnx veritabanı güncelleştirme komutu ile sonuçlanan başlatma dizesi biçimi 0

Daha sonra uygulamanın farklı bölümlerini bölmeye ve her "alan" için daha küçük projeler oluşturmaya başladım.

Benim klasör yapısı aşağıdaki gibidir: Üst katmanda (wwwroot) ve bu benim DAL projeye bağımlılıkları var yüklenmesini varlık çerçevesini patlak verdi

enter image description here

. EF iyi çalışır ve ben komutunu

dnx ef migrations add somemigrationname 

o DAL projeye Göç klasörleri ekler ve benim istenen göçler doldurur Koşabiliyorken. ben aşağıdaki hatayı atar

dnx ef database update 

kullanarak veritabanını güncellemek çalıştığınızda Howerver: tüm cevaplar Of

Format of the initialization string does not conform to specification starting at index 0. 

, Bu hatayla ilgili olarak, i çoğunluğu işaret yığın taşması burada buldum geçersiz bağlantılar.

Tuhaf kısmı, iletişim kuralımın ef'yi kullandığımda ve veritabanımı en üst katmanda güncellediğimde (wwwwroot projem) çalıştığıdır. Ama farklı katmanları kullanmaya başladığımda çalışmayı bıraktı.

Benim DAL katman kendi Başlangıç ​​bir dit şöyle dosyası kullanır:

public class Startup 
{ 
    public IConfigurationRoot Configuration { get; set; } 

    public Startup(IHostingEnvironment env, IApplicationEnvironment appEnv) 
    { 
     var builder = new ConfigurationBuilder().AddJsonFile("appsettings.json").AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true); 
     builder.AddEnvironmentVariables(); 
     Configuration = builder.Build(); 
    } 


    public void Configure(IApplicationBuilder app) 
    { 

     // For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=398940 
    } 

    public void ConfigureServices(IServiceCollection services) 
    { 
     // Add framework services. 
     services.AddEntityFramework() 
      .AddSqlServer() 
      .AddDbContext<CustomContext>(options => 
       options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"])); 

     services.AddIdentity<Entities.ApplicationUser, IdentityRole>() 
      .AddEntityFrameworkStores<CustomContext>() 
      .AddDefaultTokenProviders(); 
    } 

DÜZENLEME:

{ 
    "Data": { 
    "DefaultConnection": { 
     "ConnectionString": "Data Source=.\\SQLEXPRESS;Initial Catalog=customdb;User ID=Carl; Password=test; Integrated Security=false;" 
    } 
    }, 
    "Logging": { 
    "IncludeScopes": false, 
    "LogLevel": { 
     "Default": "Verbose", 
     "System": "Information", 
     "Microsoft": "Information" 
    } 
    } 
} 

: benim DAL proje içinde benim appsettings.json dosyası şuna benzer Bahsetmeye değer bir şey, tüm projelerimin sadece dnxcore50 {}, dnx451 değil, yalnızca hedeflenmesidir.

+0

Eğer sadece bağlantı dizesini test ettin? –

+0

Bağlantı dizesi, EF'i kendi projesine taşımadan önce kullandığımla aynıdır (çalışmakta olan). –

+0

". \\ Sqlexpress", "@ ile dizginizi ön ekledikçe bana garip geliyor" diye düşünüyorum. "\ SQLExpress " –

cevap

0

Sen hata bağlantı iple:

var connection = @"Data Source=.\\SQLEXPRESS;Initial Catalog=customdb;User ID=username; Password=mypassword; Integrated Security=false;"; 

O olmalı:

var connection = @"Data Source=.\SQLEXPRESS;Initial Catalog=customdb;User ID=username; Password=mypassword; Integrated Security=false;"; 

veya

var connection = "Data Source=.\\SQLEXPRESS;Initial Catalog=customdb;User ID=username; Password=mypassword; Integrated Security=false;"; 

bir kelimesi kelimesine kullanmak kullanmak istemiyorsanız dize.

dizeleri ve C# vermatim dizeleri Daha, okuyun: string (C# Reference)