我有一个SQL脚本,每次客户端执行"数据库管理"功能时都必须运行该脚本.该脚本包括在客户端数据库上创建存储过程.其中一些客户端在运行脚本时可能已经有了存储过程,有些可能没有.我需要将缺少的存储过程添加到客户端数据库中,但是我尝试弯曲T-SQL语法并不重要,我得到了
CREATE/ALTER PROCEDURE'必须是查询批处理中的第一个语句
在创作作品之前我已经读到了它,但我不喜欢这样做.
IF EXISTS (SELECT * FROM sys.objects WHERE type = 'P' AND name = 'MyProc')
DROP PROCEDURE MyProc
GO
CREATE PROCEDURE MyProc
...
Run Code Online (Sandbox Code Playgroud)
如何添加检查存储过程是否存在并创建它(如果它不存在)但如果存在则更改它?
我的项目中有以下模型
public class Category
{
public Guid ID { get; set; }
[Required(ErrorMessage = "Title cannot be empty")]
public string Title { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
而我正在尝试制作一个Title独特的密钥,我搜索解决方案,但找不到任何.可以建议我怎么做,拜托?
我最近更改了一个应用程序,使用以下内容开发:
DropCreateDatabaseIfModelChanges<Context>
Run Code Online (Sandbox Code Playgroud)
使用:
public class MyDbMigrationsConfiguration: DbMigrationsConfiguration<GrsEntities>
{
public MyDbMigrationsConfiguration()
{
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = true;
}
}
Run Code Online (Sandbox Code Playgroud)
在我的db上下文中,我有:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// Tell Code First to ignore PluralizingTableName convention
// If you keep this convention then the generated tables will have pluralized names.
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
//set the initializer to migration
Database.SetInitializer(new MigrateDatabaseToLatestVersion<GrsEntities, MigrationConfig>());
}
Run Code Online (Sandbox Code Playgroud)
我在DbMigrationsConfiguration中使用AddOrUpdate扩展覆盖了种子(上下文),我刚刚在drop db(DropCreateDatabaseIfModelChanges)上播种时使用了Add.
我的困惑是,无论DbContext是否有任何更改,迁移都会在应用程序的每次启动时运行.每次启动应用程序(库通过服务运行)时,初始化程序都会像Seed一样运行.我的预期行为是检查是否需要迁移(在幕后检查模型是否与物理数据库匹配)然后更新任何新的/删除的表/列,并且只有在某些内容发生更改时才运行种子.
在我的测试种子每次运行,这是可行但看似效率低,并不是我所期望的.不幸的是,MSDN文档非常有限.
我是否完全滥用MigrateDatabaseToLatestVersion?有没有办法获得我期望的行为(即只有种子,如果有模型更改)或者我应该只更改我的种子方法,以期在每次应用程序启动时运行?
entity-framework ef-code-first ef-migrations entity-framework-4.3
我刚刚创建了一个数据库并完成了我的第一次迁移(只是一个简单的表添加).现在我想添加一些我刚刚添加的存储过程,通过编写sql并在Management Studio中执行它.但是我希望在迁移中包含这些存储过程,以便保存它们,并且我可以针对它们运行Up或Down方法.这是可能的,如果是这样,需要使用什么语法?或者我只需要使用Management Studio添加/编辑/删除它们?
我在我当前的项目中使用Entity Framework Code First.数据库由许多表,许多视图和许多函数组成.我可以使用Entity Framework Code First创建表.但我无法找到使用Entity Framework Code First创建存储过程的方法.我知道Database-First策略将满足我的要求,一切运行良好,但我不想将Database-First策略用于我现有的项目代码.
请帮助我一个人,使用Entity Framework Code First策略创建存储过程的最佳方法是什么?
请帮帮我,谢谢.
我正在使用Code-First方法创建一个MVC 5应用程序,但我还在SQL Server数据库上创建了一些存储过程,有没有办法在创建数据库时在c#中生成这些存储过程,可能是通过执行sql脚本,如果是这样我应该在哪里这样做?
c# sql-server asp.net-mvc stored-procedures entity-framework
好的,所以我完全依赖我的迁移和种子代码来维护所有数据库结构和初始数据.因此,我面临的情况是,我在此版本上所做的所有更改都是直接在数据库上进行的(存储过程和更新),并且C#代码本身没有任何变化.
问题是:由于我想使用新的迁移进行那些DataBase特定的更改(并且"添加 - 迁移"将不执行任何操作 - 因为代码没有更改),如何强制新的空代码首先迁移到put我手动更改了吗?