2011-02-04 37 views
4

我正在使用Visual Studio 2010,實體框架4和模型優先開發。
我在VS EDM設計器中建模,然後自定義編輯我的edmx文件,以便表名是大寫字母(不是我的選擇,DBA對名稱區分大小寫的數據庫的要求)。 即一個EDMX SSDL條目看起來像:Visual Studio和實體框架edmx:我的自定義編輯被覆蓋

<EntitySet Name="MESSAGES" EntityType="SIMPLEPIX.STORE.MESSAGES" store:Type="Tables" Schema="MW_ARCHIVE" Table="MESSAGES" /> 

然後我在設計右鍵單擊「從模型生成數據庫...」 這確實兩件事情。首先它將我所有的edmx編輯恢復爲駱駝大小寫。即上面的行變成:

<EntitySet Name="Messages" EntityType="SimplePix.Store.Messages" store:Type="Tables" Schema="MW_ARCHIVE" /> 

(並注意我表= 「消息」屬性已被移除)。

其次它會創建下列DDL:

[snip] 
IF OBJECT_ID(N'[MW_ARCHIVE].[MESSAGES]', 'U') IS NOT NULL 
    DROP TABLE [MW_ARCHIVE].[MESSAGES]; 
[snip] 
CREATE TABLE [MW_ARCHIVE].[Messages] (
[snip] 

這是正確的:它知道它必須丟棄消息(大寫),但隨後要創建消息(駱駝)。

我該如何讓VS離開我的edmx編輯單獨並生成正確的(大寫)DDL?非常感謝。

+0

你有沒有找到解決這個問題的方法? – cheeesus 2013-08-22 09:09:57

回答

0

您無法修改EF生成的類,因爲每次執行「從數據庫模型生成」時都會更改它們。我認爲沒有辦法解決這個問題。

+1

感謝您的評論。正如我認爲這個問題明確指出的那樣,並不是生成的類(代碼)是一個問題,而是生成的DDL和SSDL(數據庫命名)部分。 – user603563 2011-02-06 15:01:49

0

它說,這在你的POCO類的頂部(如果這是你使用的是什麼

//------------------------------------------------------------------------------ 
// <auto-generated> 
//  This code was generated from a template. 
// 
//  Changes to this file may cause incorrect behavior and will be lost if 
//  the code is regenerated. 
// </auto-generated> 
//------------------------------------------------------------------------------ 

每當你重新生成代碼所做將覆蓋任何變化,每次沒有失敗

我不是說不能通過一些不起眼的方法或工具來完成,但沒有,我個人是知道的。

如果你的表必須大寫爲什麼不把那麼大寫的d B服務器?或者我在這裏錯過了什麼?

+1

與stephen776相同的提交我很害怕:感謝回覆,但它不是生成的類(代碼),它是生成的DDL和SSDL(數據庫命名)部分。您正在描述_database-first_方法,但我正在使用_model-first_,這意味着EF正在生成腳本以創建數據庫表。 – user603563 2011-02-06 15:09:41

相關問題