我使用的是ASP.NET Core和Entity Framework Core。我需要首先在应用程序上以编程方式创建一些视图和函数。有没有办法在EF配置时运行一些自定义SQL代码?
答案 0 :(得分:1)
如果您首先在实体中使用代码,则可以尝试在迁移中执行sql脚本:
首先,您需要创建迁移:
Add-Migration RunMySqlScripts
然后在生成的迁移文件中,您可以编写SQL:
// PLAIN SQL
Sql("Your sql code here");
// OR FROM FILE
var sqlFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"scripts.sql");
Sql(File.ReadAllText(sqlFile));
然后你跑:
Update-Database
这只会执行一次。
答案 1 :(得分:0)
我自己使用这个课程。这将在数据库初始化后仅运行一次代码。
public class MyDataInitializer
{
public async Task InitializeDatabaseAsync(IServiceProvider serviceProvider)
{
var db = serviceProvider.GetService<MyCustomDB>();
var databaseCreated = await db.Database.EnsureCreatedAsync();
if (databaseCreated)
{
await GenerateData(db);
}
}
private static async Task GenerateData(MyCustomDB context)
{
context.Users.Add(new User
{
Name = "admin",
PasswordParam = "pwd",
});
await context.SaveChangesAsync();
// or execute custom sql here
}
}
在Startup.Configure(IApplicationBuilder app, ...)
MyDataInitializer dataInitializer = new MyDataInitializer();
await dataInitializer.InitializeDatabaseAsync(app.ApplicationServices);
答案 2 :(得分:-1)
你可以在这里使用大量的方法,我个人可以在EF上下文中使用StartUp和Configure方法或静态构造函数。