使用 Entity Framework 4.3.1 CodeFirst 并且没有运气让迁移或脚本尊重我希望我的表最终所在的架构。
似乎默认行为(无论我做什么,我都会看到)是从实际运行的 SQL 中完全省略模式,这会导致在默认模式中为运行迁移或脚本的用户创建表。
我的 DBA 告诉我,他们无法更改我的默认架构,因为我是 AD 组的一部分而不是本地用户,因此更改运行脚本的用户的默认架构(通常推荐的解决方法)不是一个选择。
我试过使用这样的注释:
[Table("MyTable", Schema = "dbo")]
public class MyTable
{
public int Id { get; set; }
public string MyProp1 { get; set; }
public string MyProp2 { get; set; }
}
而且我也尝试过使用同一事物的流利变体:
modelBuilder.Entity<YourType>().ToTable("MyTable", "dbo");
生成的脚本(和迁移)忽略了我尝试指定模式的事实。脚本如下所示:
CREATE TABLE [MyTable] (
[Id] [int] NOT NULL IDENTITY,
[MyProp1] [nvarchar](max),
[MyProp2] [nvarchar](max),
CONSTRAINT [PK_MyTable] PRIMARY KEY ([Id])
)
当应该像这样藏在那里的 [dbo] 时:
CREATE TABLE [dbo].[MyTable] (
[Id] [int] NOT NULL IDENTITY,
[MyProp1] [nvarchar](max),
[MyProp2] [nvarchar](max),
CONSTRAINT [PK_MyTable] PRIMARY KEY ([Id])
)
有没有其他人幸运地让实体框架尊重架构?这种行为几乎完全扼杀了我们在企业环境中使用代码优先的能力。
提醒:将我的用户更改为具有不同的默认架构根本不是一种选择。