我正在使用ASP.NET MVC3中的一个网站,并按照MVC音乐商店教程进行操作,但是根据我的需要编辑内容。我现在正试图在我的测试部署服务器上预览该站点,但是SQL连接有问题。
我更改了SampleData文件以满足我的需求,并将DropCreateDatabaseIfModelChanges<MyProjectEntities>
替换为DropCreateDatabaseAlways<MyProjectEntities>
,因为它在我需要时没有更新示例数据。
当我尝试在数据库中查找某些内容时,我得到异常Cannot drop the database 'MyDatabase', because it does not exist or you do not have permission
。我明白这是因为我根本无法删除数据库,我将无法在我的服务器上执行此操作。那么如何告诉ORM我不希望它删除数据库来创建表,而是清空或更新现有数据库?
更新
我下载了SQL Server Management Studio并设法将数据从本地数据库获取到在线数据库,但现在我收到了一个不同的错误:Login failed for user '[username]'.
我仔细检查了连接字符串,这是正确的,这是我的Web.config中的完整代码片段:
<add name="AdzTowerEntities"
connectionString="Data Source=xxxxx.db.xxxxxxx.hostedresource.com; Initial Catalog=xxxxxroot; User ID=xxxxxroot; Password=xxxxxpassword;"
providerName="System.Data.SqlClient"/>
答案 0 :(得分:0)
如何使用MigrateDatabaseToLatestVersion?
如果您无法使用代码首次迁移,则可以创建自定义IDatabaseInitializer,它将执行进行更改所需的SQL:
public class AlwaysSeedInitializer : IDatabaseInitializer<MyProjectEntities>
{
public void InitializeDatabase( MyProjectEntities context )
{
if( context.Database.Exists() )
{
if( !context.Database.CompatibleWithModel( true ) )
{
context.Database.SqlCommand("Add SQL commands here");
}
}
if ( /* Insert test to see if database is already seeded */ )
{
//Seed here if the db is not seeded
}
}
}
并将其放在global.asax的Application_Start()中:
Database.SetInitializer(new AlwaysSeedInitializer());