2011-02-04 57 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