Схема базы данных платформы Объекта изменения во времени выполнения

Действительно хорошая обратная связь чрезвычайно важна. Даже простые вещи как создание его очевидный, что может и не может быть нажато, могут быть пропущены или слишком тонкие. Обратная связь, когда что-то могло бы произойти в фоновом режиме, является большой. В Gmail замечательно, что существует лента состояния, появляющаяся наверху который, позвольте нам, Вы знаете, отправляет ли что-то или загружается, но еще лучше, что это сообщает, что что-то отправило успешно или все еще загрузка.

"желтый исчезает" техника, что-то еще сделанное, популярное среди толпы RoR, которая выполняет что-то подобное. Вы никогда не хотите, чтобы пользователь задал вопрос, "Что просто произошло?" или, "Что произойдет, когда я сделаю это?".

Другой прием, который стал более популярным в последнее время, что я использовал много, редактирует на месте. Вместо того, чтобы иметь представление некоторых данных с отдельным экраном "редактирования" (или пропустить представление и [только 111] наличие экрана редактирования), это может часто быть более удобно для пользователя для имения, приятно разметил представление некоторых данных, и просто нажмите для редактирования частей его. Эта техника является действительно только соответствующей, когда чтение данных происходит чаще, чем редактирование и не подходит для серьезного ввода данных.

10
задан Craig Stuntz 2 December 2009 в 18:47
поделиться

6 ответов

Обновление После прочтения ваших комментариев становится ясно, что вы хотите изменить ссылочную схему для каждой БД, не базы данных. Я отредактировал вопрос, чтобы прояснить это и восстановить предоставленный вами образец EDMX, который был скрыт в исходном форматировании.

Я повторю свой комментарий ниже здесь:

Если схемы находятся в той же БД, вы не может переключать их во время выполнения (кроме кода EF 4). Это связано с тем, что две структурированные таблицы с одинаковыми именами в двух разных схемах считаются совершенно разными таблицами.

Я также согласен с приведенным выше JMarsch: я бы пересмотрел схему размещения тестовых и производственных данных (или, фактически, « что-нибудь и производственные данные») в той же БД. Похоже на приглашение к катастрофе.

Старый ответ ниже.

Вы уверены, что меняете правильную строку подключения? Строка подключения, используемая EF, встроена в строку подключения, которая определяет расположение CSDL / SSDL / и т. Д. Обычно имеется «обычная» строка подключения для использования какой-либо другой частью вашего приложения (например, членство в ASP.NET). В этом случае при изменении БД вы должны обновить обе строк подключения.

Аналогичным образом, если вы обновляете строку подключения во время выполнения, вы должны использовать специальные инструменты для этого , которые понимают формат строки подключения EF и отличаются от обычного построителя строки подключения. См. Пример по ссылке. См. Также эту справку по назначению строк подключения EF .

повторно изменить строку подключения? Строка подключения, используемая EF, встроена внутри строки подключения, которая определяет расположение CSDL / SSDL / и т. Д. Обычно имеется «обычная» строка подключения для использования какой-либо другой частью вашего приложения (например, членство в ASP.NET). В этом случае при изменении БД вы должны обновить обе строк подключения.

Аналогичным образом, если вы обновляете строку подключения во время выполнения, вы должны использовать специальные инструменты для этого , которые понимают формат строки подключения EF и отличаются от обычного построителя строки подключения. См. Пример по ссылке. См. Также эту справку по назначению строк подключения EF .

повторно изменить строку подключения? Строка подключения, используемая EF, встроена в строку подключения, которая определяет расположение CSDL / SSDL / и т. Д. Обычно имеется «обычная» строка подключения для использования какой-либо другой частью вашего приложения (например, членство в ASP.NET). В этом случае при изменении БД вы должны обновить обе строк подключения.

Аналогичным образом, если вы обновляете строку подключения во время выполнения, вы должны использовать специальные инструменты для этого , которые понимают формат строки подключения EF и отличаются от обычного построителя строки подключения. См. Пример по ссылке. См. Также эту справку по назначению строк подключения EF .

строка подключения для использования какой-либо другой частью вашего приложения (например, членство в ASP.NET). В этом случае при изменении БД вы должны обновить обе строк подключения.

Аналогичным образом, если вы обновляете строку подключения во время выполнения, вы должны использовать специальные инструменты для этого , которые понимают формат строки подключения EF и отличаются от обычного построителя строки подключения. См. Пример по ссылке. См. Также эту справку по назначению строк подключения EF .

строка подключения для использования какой-либо другой частью вашего приложения (например, членство в ASP.NET). В этом случае при изменении БД вы должны обновить обе строк подключения.

Аналогичным образом, если вы обновляете строку подключения во время выполнения, вы должны использовать специальные инструменты для этого , которые понимают формат строки подключения EF и отличаются от обычного построителя строки подключения. См. Пример по ссылке. См. Также эту справку по назначению строк подключения EF .

которые понимают формат строки подключения EF и отделены от обычного построителя строки подключения. См. Пример по ссылке. См. Также эту справку по назначению строк подключения EF .

которые понимают формат строки подключения EF и отделены от обычного построителя строки подключения. См. Пример по ссылке. См. Также эту справку по назначению строк подключения EF .

2
ответ дан 3 December 2019 в 22:37
поделиться

Строка подключения для EF находится в файле конфигурации. Менять файл SSDL не нужно.

РЕДАКТИРОВАТЬ

Есть ли у вас схемы prod и test в одной базе данных?

Если да, вы можете исправить это, используя отдельную базу данных для prod и test. Использование одного и того же имени схемы в обеих базах данных.

Если нет, вы можете исправить это, используя одно и то же имя схемы в обеих базах данных.

Если у вас будут абсолютно разные имена схемы, создайте две модели EF, одну для теста, а другую for prod, затем выберите, какой из них использовать в коде, на основе значения в вашем файле конфигурации.

1
ответ дан 3 December 2019 в 22:37
поделиться

Самый простой способ решить эту проблему - вручную удалить все записи вроде 'Schema = "SchemaName"' из части SSDL модели.
В этом случае все работает исправно.

2
ответ дан 3 December 2019 в 22:37
поделиться

Когда я создаю новую «Модель данных сущности ADO.NET», есть два свойства: «Имя контейнера сущности» и « Пространство имен "доступно для редактирования в режиме конструктора. Используя namespace.EntityContainerName, вы можете создать новый экземпляр, указав строку подключения.

MyEntities e = new MyEntities (" connstr ");
e.MyTable.Count ();

Я не уверен, поможет ли это вам или нет, удачи!

Кроме того, это хороший случай для нескольких слоев (не обязательно быть проектами, но можно быть).

Решение
* DataAccess - здесь сущности
* Сервис - Обертывает доступ к DataAccess
* Потребитель - Служба вызовов

В этом сценарии потребитель вызывает службу, передавая любой фактор, определяющий, какая строка подключения используется. Затем служба создает экземпляр доступа к данным, передавая соответствующую строку подключения, и выполняет запрос потребителя.

1
ответ дан 3 December 2019 в 22:37
поделиться

Извините, это не надежный ответ, но я нашел этот проект на codeplex (а также этот вопрос), когда искал в Google аналогичную проблему:

http://efmodeladapter.codeplex.com/

Функции включают :

  • Настройка схемы модели во время выполнения, в том числе:
  • Регулировка таблицы уровня данных префиксы или суффиксы
  • Регулировка владелец объектов базы данных

Код из документации:

public partial class MyObjectContext : BrandonHaynes.ModelAdapter.EntityFramework.AdaptingObjectContext
{
        public MyObjectContext() 
        : base(myConnectionString, 
        new ConnectionAdapter(
            new TablePrefixModelAdapter("Prefix", 
                new TableSuffixModelAdapter("Suffix")), 
        System.Reflection.Assembly.GetCallingAssembly()))
    {
    ...
    }

}

Похоже, это именно то, что вы ищете.

2
ответ дан 3 December 2019 в 22:37
поделиться

Решил мою проблему, переехав на sql сервер и уйдя от mysql.

Mysql и Mssql по-разному интерпретируют "схемы". Схемы в mysql - это те же самые/синонимы к базам данных. Когда я создавал модель, имя схемы...которое совпадает с именем базы данных, жестко закодировано в сгенерированной модели xml. В Mssql схема по умолчанию является "dbo", которая жестко кодируется, но это не проблема, так как в mssql схемы и базы данных отличаются

.
0
ответ дан 3 December 2019 в 22:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: