【问题标题】:Visual Studio and Entity Framework edmx: My Custom edits are over-writtenVisual Studio 和实体框架 edmx:我的自定义编辑被覆盖
【发布时间】:2011-02-04 18:20:38
【问题描述】:

我正在使用 Visual Studio 2010、Entity Framework 4 和模型优先开发。
我在 VS EDM 设计器中建模,然后自定义编辑了我的 edmx 文件,使表名是大写的(不是我的选择,DBA 对名称大小写敏感的数据库的要求)。 即 edmx ssdl 条目将如下所示:

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

然后我在设计器中右键单击“从模型生成数据库...” 这做了两件事。首先,它将我所有的 edmx 编辑恢复为驼峰式。 IE。上面的行变成:

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

(请注意我的 Table="MESSAGES" 属性已被删除)。

其次,它会创建以下 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]

没错:它知道它必须删除 MESSAGES(大写),但随后又想创建 Messages(驼峰式)。

如何让 VS 不理会我的 edmx 编辑并生成正确的(大写)DDL?非常感谢。

【问题讨论】:

  • 您有没有找到解决方法?

标签: visual-studio entity-framework edmx


【解决方案1】:

您不能修改 EF 生成的类,因为每次执行“从数据库模型生成”时它们都会被更改。我认为没有办法解决这个问题。

【讨论】:

  • 感谢您的评论。我认为这个问题很清楚,问题不是生成的类(代码),而是生成的 DDL 和 SSDL(数据库命名)部分。
【解决方案2】:

它在你的 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>
//------------------------------------------------------------------------------

每当您重新生成代码时,您所做的任何更改都将被覆盖,每次都不会失败

我并不是说它不能通过一些晦涩难懂的方法或工具来完成,但我个人并不知道。

如果你的表必须是大写的,为什么不在数据库服务器上设置大写呢?还是我在这里遗漏了什么?

【讨论】:

  • 恐怕与 stephen776 的评论相同:感谢您的回复,但问题不是生成的类(代码),而是生成的 DDL 和 SSDL(数据库命名)部分。您描述的是 database-first 方法,但我使用的是 model-first,这意味着 EF 正在生成脚本来创建数据库表。
猜你喜欢
  • 2015-01-29
  • 1970-01-01
  • 2011-09-08
  • 2015-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多