C# EF模型中的多个数据库模式优先

C# EF模型中的多个数据库模式优先,c#,sql,entity-framework,edmx,ef-model-first,C#,Sql,Entity Framework,Edmx,Ef Model First,我想使用模型优先的方法创建带有实体框架的数据库。我还想使用多个数据库模式。是否有可能创建附加的数据库模式(比如“安全性”)以及默认的“dbo” 我还想知道为什么在执行“从模型生成数据库”命令后,.edmx文件的SSDL部分中的EntitySets模式属性被重置回“dbo” ... 据我所知,首先在模型中使用单个EDMX是不可能的。EDMX设计器仅支持“属性”窗口中整个模型的单个“数据库架构名称”字段 正如您所发现的那样,您可以手动编辑EDMX来破解其中的模式名称。但是,当您从该模型生成DDL时

我想使用模型优先的方法创建带有实体框架的数据库。我还想使用多个数据库模式。是否有可能创建附加的数据库模式(比如“安全性”)以及默认的“dbo”

我还想知道为什么在执行“从模型生成数据库”命令后,.edmx文件的SSDL部分中的EntitySets模式属性被重置回“dbo”


...

据我所知,首先在模型中使用单个EDMX是不可能的。EDMX设计器仅支持“属性”窗口中整个模型的单个“数据库架构名称”字段

正如您所发现的那样,您可以手动编辑EDMX来破解其中的模式名称。但是,当您从该模型生成DDL时(右键单击“从模型生成数据库”),它似乎只部分使用了正确的模式名称。脚本在某些部分中使用架构名称,但在其他部分中不使用架构名称:

-- --------------------------------------------------
-- Dropping existing tables
-- --------------------------------------------------

IF OBJECT_ID(N'[yourSchema].[YourTable]', 'U') IS NOT NULL
    DROP TABLE [yourSchema].[YourTable];

-- --------------------------------------------------
-- Creating all tables
-- --------------------------------------------------

CREATE TABLE [defaultSchema].[YourTable] ( ... );
CodePlex上还有一个问题似乎支持这一结论:

可能有一种方法可以通过修改生成DDL的T4模板来实现多模式支持,但我还没有对此进行研究。在C:\Program Files(x86)\Microsoft Visual Studio 11.0\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\DBGen中找到的默认文件是“SSDLToSQL10.tt”(在我的计算机上)


(使用EF 6.1.1在VS2012 Premium上进行了测试。)

没有尝试使用troll,但EDMX和EF是一团乱麻。如果可以,请走开。
-- --------------------------------------------------
-- Dropping existing tables
-- --------------------------------------------------

IF OBJECT_ID(N'[yourSchema].[YourTable]', 'U') IS NOT NULL
    DROP TABLE [yourSchema].[YourTable];

-- --------------------------------------------------
-- Creating all tables
-- --------------------------------------------------

CREATE TABLE [defaultSchema].[YourTable] ( ... );