2014-08-30 84 views
2

我想使用模型第一種方法來創建實體框架的數據庫。我也想使用多個數據庫模式。有沒有可能創建額外的數據庫模式(稱爲「安全」)以及默認的「dbo」?EF模型中的多個數據庫模式第一個

我還想知道爲什麼執行「從模型生成數據庫」命令後,我的.dmx文件的SSDL部分中的EntitySets模式屬性重置爲「dbo」。

<?xml version="1.0" encoding="utf-8"?> 
<edmx:Edmx Version="3.0" mlns:edmx="http://schemas.microsoft.com/ado/2009/11/edmx"> 
    <!-- EF Runtime content --> 
    <edmx:Runtime> 
    <!-- SSDL content --> 
    <edmx:StorageModels> 
    <Schema Namespace="ThewiseModel.Store" Alias="Self" provider="System.Data.SqlClient" ProviderManifestToken="2012" xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" xmlns="http://schemas.microsoft.com/ado/2009/11/edm/ssdl"> 
    <EntityContainer Name="ThewiseModelStoreContainer"> 
    <EntitySet Name="PermissionTypes" EntityType="ThewiseModel.Store.PermissionTypes" store:Type="Tables" Schema="Security" /> 
    <EntitySet Name="PermissionValues" EntityType="ThewiseModel.Store.PermissionValues" store:Type="Tables" Schema="Security" /> 
    <EntitySet Name="Roles" EntityType="ThewiseModel.Store.Roles" store:Type="Tables" Schema="Security" /> 
    <EntitySet Name="Users" EntityType="ThewiseModel.Store.Users" store:Type="Tables" Schema="Security" /> 
    <EntitySet Name="Memberships" EntityType="ThewiseModel.Store.Memberships" store:Type="Tables" Schema="Security" /> 
... 
+2

沒有試圖拖釣,但EDMX和EF是一團糟。如果可以,請離開。 – Andomar 2014-08-30 18:30:52

回答

0

據我所知,這是不可能的,在型號優先使用單個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上開一個問題:http://entityframework.codeplex.com/workitem/268

有可能做到的方式通過修改生成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)

相關問題