7

Sorunum, aşağıdaki kodun başlatma sırasında bir veri deposu kaydetmemesidir. Bir lambda benim DBContext için DbContextOptions belirtmek çalışıyorum ConfigureServices (IServiceCollection hizmetleri) olarakVeri deposunu kaydettirme Startup.cs içinde DbContextOptions Ekleme

An unhandled exception occurred while processing the request. 

InvalidOperationException: No data stores are configured. Configure a data store by overriding OnConfiguring in your DbContext class or in the AddDbContext method when setting up services. 
    Microsoft.Data.Entity.Storage.DataStoreSelector.SelectDataStore(ServiceProviderSource providerSource) 

: Bu benim uygulamadan yanıt almak özgü "hata" ifadedir. Kod: Benim DBContext olarak

services.AddEntityFramework(Configuration) 
    .AddSqlServer() 
    .AddDbContext<MyDbContext>(
     options => 
     options.UseSqlServer(Configuration.Get("Data:DefaultConnection:ConnectionString")) 
    ); 

, ben kod tabanına seçeneği gönderen bir kurucuya sahip:

public MyContext(DbContextOptions options) : base(options) { } 
başlangıçta okunur Benim yapılandırma dosyası config.json, bu connectionstring içeriyor

:

"Data": { 
    "DefaultConnection": { 
     "ConnectionString": "Server=(localdb)\\MSSQLLocalDB;Database=MyDbName;Trusted_Connection=True;MultipleActiveResultSets=True;" 
    } 
} 

Daha önce

protected override void OnConfiguring(DbContextOptions options) 
{ 
    options.UseSqlServer(Startup.Configuration.Get("Data:DefaultConnection:ConnectionString")); 

} 
kullandık DbContext içinde

başarıyla. Veri deposunu kaydeder ve düzgün çalışır, ancak lambda yöntemini kullanmayı tercih ederim.

Daha fazla bilgi gerekirse, bunu sağlarım.

+0

Evet, Lambda yolu –

+0

@RonDeFreitas Evet, şu anda beta3 üzerinde duyuyorum göçler gerçekleştirmeye çalışırken, ben de aynı sorunu yaşıyorum beta 4'te düzgün çalışmıyor gibi görünüyor, ama ben ben tahmin Sadece düzeltmek kadar beklemek zorunda, sadece github üzerinde EF 7 DbContextOptions ayarlamak için nasıl bir örnek olarak lambda yolu var garip olduğunu düşündüm. Bu arada, bu konuda yalnız olmadığımı bilmek güzel. – DanielRJ

cevap

5

İçeriğinizi denetleyicinize mi yoksa onu nerede kullanıyorsunuz? Bağlamı yerine bağlamı güncelleştirmeye çalışırsanız, Startup.cs

+0

DbContext'imi enjekte ediyorum. Yani, bu üzücü değil. – DanielRJ

+0

Wierd ... Bu beta4 benim bağlam ve ince services.AddEntityFramework çalışıyor() .AddSqlServer() .AddDbContext (seçenekler => options.UseSqlServer (Yapılandırma [ "Veri: DefaultConnection: ConnectionString" ])); – Slick86

+0

Paylaştığınız için teşekkürler, yarın deneyin. Ayrıca, bir güçlük olmayacaksa beta4'e geçeceğim. Beta2 ile başlatıldı ve yükseltme 2 ile 3 arasında ağrılıydı. Microsoft.MVC'de göç ve sınıf yeniden adlandırılıyor, eğlenceli değil. Yarın nasıl gittiğini size bildiririm. – DanielRJ

1

I'de (yine de) belirtilen yapılandırmayı, EF7 ve beta 4 ile aynı sorunu gidermediğini keşfettim. Bu benim geçici çözümümdür. benim veri bağlamı:

public class AspNetDataContext : IdentityDbContext, IDataContext 
{ 
    private readonly string _connectionString; 
    public DbSet<Player> Players { get; set; } 

    public AspNetDataContext(DbContextOptions options) 
    { 
     _connectionString = ((SqlServerOptionsExtension)options.Extensions.First()).ConnectionString; 
    } 

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) 
    { 
     optionsBuilder.UseSqlServer(_connectionString); 
    } 
} 

Ben seçenekler arasından connectionstring ayıklamak ve OnConfiguring yönteminde bunu kullanın. Bu hala istediğimiz çözüm değil, ama Startup.cs'de bir şeyi değiştirmek zorunda değilim (açıkladığınız gibi her şey). Ve bu düzeltildikten sonra, sadece içeriği veri bağlam sınıfından kaldırmak zorundasınız. Ve belki birilerinin bu sorun için başka (ve daha da iyi) bir çözümü var.

+0

Beta5'ten ne haber? –

-1

EF7, DBContextOptionsBuilder öğesinden EntityOptionsBuilder ürününe yeni sytax sahiptir. Aşağıda ayrıca komut satırı iskelesi için kullanıma hazırdır.

public class ContentContext : DbContext 
{ 
    public DbSet<Content> Contents { get; set; } 
    public DbSet<ContentCategory> ContentCategories { get; set; } 

    protected override void OnConfiguring(EntityOptionsBuilder optionsBuilder) 
    { 
     optionsBuilder.UseSqlServer("Data:DefaultConnection:ConnectionString"); 
    } 
}