Visual Studio и Entity Framework edmx: мои пользовательские изменения переписаны - PullRequest
4 голосов
/ 04 февраля 2011

Я использую 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" />

Затем я щелкаю правой кнопкой мыши в конструкторе, чтобы "Создать базу данных из модели ..." Это делает 2 вещи. Сначала он возвращает все мои правки edmx обратно в дело верблюда. То есть строка выше становится:

<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]

Правильно: он знает, что должен сбросить СООБЩЕНИЯ (заглавными буквами), но затем хочет создать Сообщения (верблюжий регистр).

Как я могу заставить VS оставить свои правки edmx в одиночку и сгенерировать правильный (в верхнем регистре) DDL? Спасибо большое.

Ответы [ 2 ]

0 голосов
/ 05 февраля 2011

Это говорит об этом в верхней части ваших классов 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>
//------------------------------------------------------------------------------

Всякий раз, когда вы обновляете свой код, любые внесенные вами изменения будут перезаписываться, каждый раз в обязательном порядке

Я не говорю, что это не может быть сделано с помощью каких-то неясных методов или инструментов, но ни одного, о котором я лично знаю.

Если ваши таблицы должны быть в верхнем регистре, почему бы не использовать верхний регистр на сервере БД? Или я что-то здесь упускаю?

0 голосов
/ 04 февраля 2011

вы не можете изменять сгенерированные EF классы, так как они будут меняться каждый раз, когда вы выполняете «Генерировать из базы данных». Я не думаю, что есть способ обойти это.

...