C# Azure功能项目中的EF代码首次迁移
我想在Azure functions项目中使用EF Code first迁移,该项目是带有C# Azure功能项目中的EF代码首次迁移,c#,entity-framework,ef-code-first,azure-sql-database,azure-functions,C#,Entity Framework,Ef Code First,Azure Sql Database,Azure Functions,我想在Azure functions项目中使用EF Code first迁移,该项目是带有EF 6.2.0的类库.net 4.6.2。我添加了db上下文和实体。当我尝试运行启用迁移或添加迁移时,请将此类库设置为默认项目,然后返回以下错误。我在解决方案中没有任何web项目 使用“2”参数调用“SetData”时出现异常:“Type” 'Microsoft.VisualStudio.ProjectSystem.VS.Implementation.Package.Automation.OAProjec
EF 6.2.0
的类库.net 4.6.2
。我添加了db上下文和实体。当我尝试运行启用迁移
或添加迁移
时,请将此类库设置为默认项目,然后返回以下错误。我在解决方案中没有任何web项目
使用“2”参数调用“SetData”时出现异常:“Type”
'Microsoft.VisualStudio.ProjectSystem.VS.Implementation.Package.Automation.OAProject'
在程序集“Microsoft.VisualStudio.ProjectSystem.VS.实现”中,
版本=15.0.0.0,区域性=中性,PublicKeyToken=b03f5f7f11d50a3a'
未标记为可序列化。位于
C:\Users\xxxxx-win.nuget\packages\entityframework\6.2.0\tools\entityframework.psm1:720
字符:5
+$domain.SetData('project',$project)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+CategoryInfo:NotSpecified:(:)[],MethodInvocationException
+FullyQualifiedErrorId:序列化异常
但当我运行该项目时,它会自动创建带有InitialCreate
条目的\uu MigrationHistory
表。但我在解决方案中的任何位置都看不到此迁移文件
dbcontext文件以供参考
public class TestDbContext : DbContext
{
public TestDbContext(string cs)
: base(cs)
{
}
public TestDbContext() :
base(ConfigurationManager.ConnectionStrings["sql_connection"].ConnectionString)
{
Database.SetInitializer(new TestDBInitializer());
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<TestRaw>().ToTable("TestRaw");
modelBuilder.Entity<TestRequest>().ToTable("TestRequest");
}
public virtual DbSet<TestRaw> TestRaw { get; set; }
public virtual DbSet<TestRequest> TestRequest { get; set; }
}
public class TestDBInitializer : CreateDatabaseIfNotExists<TestDbContext>
{
protected override void Seed(TestDbContext context)
{
base.Seed(context);
}
}
公共类TestDbContext:DbContext
{
公共TestDbContext(字符串cs)
:基底(cs)
{
}
公共TestDbContext():
基本(ConfigurationManager.ConnectionString[“sql\U连接”].ConnectionString)
{
SetInitializer(新的TestDBInitializer());
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Entity().ToTable(“TestRaw”);
modelBuilder.Entity().ToTable(“TestRequest”);
}
公共虚拟数据库集TestRaw{get;set;}
公共虚拟数据库集测试请求{get;set;}
}
公共类TestDBInitializer:CreateDatabaseIfNotExists
{
受保护的覆盖无效种子(TestDbContext上下文)
{
种子(上下文);
}
}
此外,azure函数不使用app.config。所以不确定EF相关依赖项注册在哪里?我们可以将EF代码优先迁移与Azure功能一起使用吗?如果是,如何查看迁移文件夹和相关文件?在部署到functionapp时,是否需要注意与迁移相关的任何问题?我将把这个答案分为两部分
ConfigurationManager.ConnectionString[“foobarConnString”]获取数据库连接字符串。ConnectionString
(或者等效的.NET核心代码,如果以核心为目标)
当然,这意味着您需要在functions项目和model项目中引用EF库我将把这个答案分成两部分