2016-03-25 23 views
0

Bireysel kullanıcı hesabı kimlik doğrulaması ile bir MVC5 projem var. Kendime tescil edilmiş bir test yaptım ve her şey çalışıyor. Sonra deney uğruna ben ApplicationUser sınıfa bir özellik ekledik, şimdi ti şöyle görünür:Kimlik modeline özellik eklendi ve veritabanını taşıdı

Sonra
public class ApplicationUser : IdentityUser 
{ 
    public string NewPropery { get; set; } 

    public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager) 
    { 
     var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie); 
     return userIdentity; 
    } 
} 

public class ApplicationDbContext : IdentityDbContext<ApplicationUser> 
{ 
    public ApplicationDbContext() 
     : base("DefaultConnection", throwIfV1Schema: false) 
    { 
    } 

    public static ApplicationDbContext Create() 
    { 
     return new ApplicationDbContext(); 
    } 
} 

Ben Visual Studio 2013 Paket Yöneticisi Konsolu açılıp karşılaştık:

PM> Enable-Migrations 
PM> Add-Migration "NewProperty" 
PM> Update-Database 

ilk iki komutları iyi ancak üçüncü komuta başarısız gider ve bu hatadır:

System.Data.SqlClient.SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)

veritabanı MVC şablonu tarafından oluşturulan her zamanki LocalDB, ben bağlantı dizesini terk Oluşturulduğunda projede:

<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-NyProject.Web-20160325120840.mdf;Initial Catalog=aspnet-MyProject.Web-20160325120840;Integrated Security=True" 
     providerName="System.Data.SqlClient" /> 

Hata nerede?

GÜNCELLEME 1-

Ben projeyi bir "Başlangıç ​​projesi" yapım Paket Yöneticisi Konsolu projeyi seçmek için kullandıkları Steve yorumunun ardından bu farklı bir hata There is already an object named 'AspNetRoles' in the database. üretecektir. Bu doğrudur. Önceden var olan tabloları kaldırmalı mıyım ve verilerim ne olacak?

+0

İlk bağlantı dizesi olarak işaretlenmiş projede olduğundan emin olun: o koduna göre modeller oluşturur ve son göç saklanan anlık karşılaştırır, bu nedenle bu denemek Bunun nedeni başlangıç ​​projesi. Herhangi bir ayrıntı görmek için güncelleme-veritabanı -Verbose deneyin. –

+0

'Zaten veritabanında 'AspNetRoles' adlı bir nesne var. 'Beni kost mu ediyor? Tabiki öyle. Taşınmadan önce her tabloyu silmeli miyim? Ve verilerim ne olacak? –

cevap

0

Bu hatayı alıyorsunuz çünkü temel bir başlangıç ​​geçişi oluşturmadınız, böylece EF tüm nesnelerinizin oluşturulması gerektiğini düşünüyor. ,

1) Comment out the new field. 
2) Delete the existing migration. 
3) Add a baseline migration: add-migration Initial -IgnoreChanges 
4) update-database (now EF has a snapshot to compare changes to). 
5) add-migration NewProperty 
6) update-database 

EF Under the Hood