Сделать Entity Framework доступным только для чтения - PullRequest
4 голосов
/ 09 марта 2012

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

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

Мои исследования показывают, что это невозможно, но я ожидаю, что изменение функции или обходной путь могут быть доступны уже сейчас.Кто-нибудь достиг этого?

1 Ответ

8 голосов
/ 09 марта 2012

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

Если вы настроили параметры безопасности и роли на сервере, вам нужно проверить более подробно, но по умолчанию data_reader подойдет.

Редактировать

Простой способ сделать это - переопределить метод SaveChanges() контекста данных для этих баз данных:

public override int SaveChanges()
{
    throw new AccessViolationException(
         "Don't mess with a live database during test");
}
...