Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将使用的默认SQL Server架构从[dbo]更改为其他内容_C#_Entity Framework 5 - Fatal编程技术网

C# 将使用的默认SQL Server架构从[dbo]更改为其他内容

C# 将使用的默认SQL Server架构从[dbo]更改为其他内容,c#,entity-framework-5,C#,Entity Framework 5,我正在将EF5与DefaultMembershipProvider一起使用,并希望控制SQL Server中用于DefaultMembershipProvider创建的表的模式 EF5说这是可行的,因为: modelBuidler.Entity<MyEntity>().ToTable("MyTable", "MySchema"); modelBuidler.Entity().ToTable(“MyTable”、“MySchema”); 但由于这些不是“我的”实体,我不能这样做 问

我正在将EF5与DefaultMembershipProvider一起使用,并希望控制SQL Server中用于DefaultMembershipProvider创建的表的模式

EF5说这是可行的,因为:

modelBuidler.Entity<MyEntity>().ToTable("MyTable", "MySchema");
modelBuidler.Entity().ToTable(“MyTable”、“MySchema”);
但由于这些不是“我的”实体,我不能这样做

问题:

1) 那么在EF5中我该怎么做呢?
2) 在使用DbModelBuilder.HasDefaultSchema时,EF6中是否处理了此问题?

是的,我确实会升级到EF6,然后使您的上下文如下所示,例如:

public partial class BlogContext : DbContext
{
    public BlogContext()
        : base("BlogDb")
    {
        Database.SetInitializer<BlogContext>(null);
    }

    public DbSet<BlogPost> BlogPosts { get; set; }
    public DbSet<Category> Categories { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingEntitySetNameConvention>();
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
        modelBuilder.HasDefaultSchema("");
    }
}
公共部分类BlogContext:DbContext
{
公共博客上下文()
:base(“BlogDb”)
{
Database.SetInitializer(null);
}
公共DbSet BlogPosts{get;set;}
公共数据库集类别{get;set;}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove();
modelBuilder.Conventions.Remove();
modelBuilder.HasDefaultSchema(“”);
}
}
您可以看到在末尾将默认模式设置为“”,这同样有效。在我的例子中,Oracle 12c将登录用户名作为模式,一切正常。当然,您也可以从配置中加载模式名并将其插入其中


注意:自动迁移将不再有效,因为这似乎会使系统非常混乱。请参阅此处,了解可能的解决方案,以便至少显式迁移能够以某种方式起作用:

可能重复这篇关于更改表内容的文章。我所要做的就是更改表所在的模式。与此同时,我们发现您需要设置模式名称,虽然很遗憾,但却是真的。架构名称为空时发生意外行为。我认为这是一个错误,并将它与甲骨文,但我们没有一个维护合同。因此,我们编写了一个方法,从连接字符串中提取模式名称,并将其注入上下文中,同时将其正确设置到MigrationContext中。。。