2016-03-19 18 views
-2

MVC şablonu kullanılarak otomatik olarak oluşturulmamış olan Identity 2.0 ile MVC4 projesi vardı. Orada hiçbir şey değişmedi. Daha sonra projeye MVC6 + EF7'ye geçmeye karar verdim. Aynı çözümü 1 proje daha oluşturdum ve oradaki tüm nesneleri taşıdım. Ben çalıştırmak için öneri google çalıştı ve buldumEF7 varolan veritabanında kimlikle

SqlException: There is already an object named 'AspNetRoles' in the database. 

:

Başvuru aşağıdaki iletiyle başarısız böylece zaten var nesneleri oluşturmak için EF çalışır uygulamayı çalıştırmak için çalışıyorum zaman

Exception calling "SetData" with "2" argument(s): "Type 'Microsoft.VisualStudio.ProjectSystem.VS.Implementation.Package.Automation.OAProject' in 
assembly 'Microsoft.VisualStudio.ProjectSystem.VS.Implementation, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' is not 
marked as serializable." 
At C:\Users\user\Source\Repos\Proj.Accounting\packages\EntityFramework.6.1.3\tools\EntityFramework.psm1:720 char:5 
+  $domain.SetData('startUpProject', $startUpProject) 
+  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : NotSpecified: (:) [], MethodInvocationException 
    + FullyQualifiedErrorId : SerializationException 

System.NullReferenceException: Object reference not set to an instance of an object. 
    at System.Data.Entity.Migrations.Extensions.ProjectExtensions.GetProjectTypes(Project project, Int32 shellVersion) 
    at System.Data.Entity.Migrations.Extensions.ProjectExtensions.IsWebProject(Project project) 
    at System.Data.Entity.Migrations.MigrationsDomainCommand.GetFacade(String configurationTypeName, Boolean useContextWorkingDirectory) 
    at System.Data.Entity.Migrations.AddMigrationCommand.Execute(String name, Boolean force, Boolean ignoreChanges) 
    at System.Data.Entity.Migrations.AddMigrationCommand.<>c__DisplayClass2.<.ctor>b__0() 
    at System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command) 
Object reference not set to an instance of an object. 

benim soru yani: nasıl EF geçişleri devre dışı bırakmak için Add-Göç İlk -IgnoreChanges

Sonra aşağıdaki hata mesajı alıyorum? Veritabanına erişmek için OLEDB kullanıyorum ve EF sadece Kimlik için kullanılıyor.

GÜNCELLEME: önerdi cevap tarafından ben çizgi izleyen eklemeye çalıştık altında Başlangıç ​​ sınıf yapıcısı

Önem Kod Açıklama Proje Dosyası Hattı Hata CS0311 tipi

Database.SetInitializer<ApplicationDbContext>(null); 

'Proj.Accounting.Web.Angular.Models.ApplicationDbContext', jenerik türdeki 'TContext' tür parametresi olarak ve yönteminde kullanılamaz. 'Database.SetInitializer (IDatabaseInitializer)'. 'Proj.Accounting.Web.Angular.Models.ApplicationDbContext' ile 'System.Data.Entity.DbContext' arasında hiçbir dolaylı başvuru dönüşümü yoktur. Proj.Accounting.Web.Angular.DNX 4.5.1 C: Repos \ Proj.Accounting \ Proj.Accounting.Web.Angular \ Startup.cs 50

+0

sizin 'ApplicationDbContext'' DbContext' devralan mu? – Jcl

+0

yok: public class ApplicationDbContext: IdentityDbContext

+0

'IdentityDbContext' ('Microsoft.AspNet.Identity.EntityFramework' içinde ise) 'System.Data.Entity.DbContext' devralması gerekir, bu yüzden iyi olmalıdır. sonra tekrar, ben DNX ve ASP.Net Core için emin değilim, belki farklı bir NuGet paketi gerekir? Tüm farklı nuget paketleri ve sürümleri şu anda ciddi bir karmaşa ve belgeler azdır: -/ – Jcl

cevap

0

kodu kullanıyor musunuz \ \ Users \ Kullanıcı \ Kaynak -ilk? İlk kod ile EF veritabanını oluşturmaya çalışır. Bu veritabanı varsa, bu hataları alabilirsiniz. İlk kodu devre dışı bırakmayı veya ilk veritabanını ayarlamayı deneyin.

set initial database

disable code-first Yoksa paket konsolunu kullanarak deneyebilirsiniz:

C: \ PS> Add-Göç Önce

İskele

"İlk" adlı yeni göç

-------------------------- ÖRNEK 2 -------------------- ------

C: \ PS> Add-Göç İlk -IgnoreChanges

şimdiki modelde algılanan bekleyen değişiklikleri göz ardı boş göç Temel Yapı. Varolan bir veritabanı için Göçler'i etkinleştirmek üzere ilk, boş bir geçiş oluşturmak için kullanılabilir. N.B. Bunu yapmak, hedef veritabanı şemasının geçerli modelle uyumlu olduğunu varsayar.

enable-migrations -ContextTypeName ProjectName.DbContext -MigrationsDirectory:Migrations -EnableAutomaticMigrations –Force 

2) tarafından boş bir göç oluşturun: göç etkinleştirme

1):

https://coding.abel.nu/2012/03/ef-migrations-command-reference/

+0

Soruda güncellememi kontrol edin lütfen –

+0

Bunları denediniz mi? http://stackoverflow.com/questions/9703810/how-to-disable-migration-in-entity-framework-4-3-1 –

0

deneyin PM Konsol'da komut dosyalarını çalıştırarak aşağıdaki yöntemleri kullanmak “Yoksayılan Değişiklikler”:

Add-Migration –configuration ProjectName.Migrations.Configuration migration_01 –IgnoreChanges 

3) Güncelleme veritabanı: Daha fazla bilgi için

Update-Database -configuration ProjectName.Migrations.Configuration -Verbose 

: https://msdn.microsoft.com/en-us/data/dn579398.aspx. Bu yardımcı olur

Umut ...

+0

enable-migrations: 'enable-migrations' teriminin adı olarak tanınmıyor Bir cmdlet –

+0

@sidux Cevabımda [Güncelleme Veritabanı 'terimi bir cmdlet adı olarak tanınmadı] konusuna bir bakın (http://stackoverflow.com/questions/9674983/the-term-update-database -is-tanınmadı-gibi-adı-of-a-cmdlet'ine/29031669 # 29031669). –

+0

Evet, yaptım. Projeyi sıfırdan başlatmaya bile çalıştım ... –