Ну, это один из способов предотвратить инъекцию SQL, я полагаю, но человек, оставляйте это правительству США, чтобы применять правила asinine к тем, что должно быть простым.
Ограничение в основном требует, чтобы сайт был только для чтения. Предположительно, это относится только к объектам, открытым для публики, поэтому вы все равно можете разрешать прямой доступ к базе данных во внутреннем приложении (в противном случае я понятия не имею, как вы на самом деле когда-либо сохраняете что-либо). Несмотря на это, Entity Framework может легко справиться с этим. Что касается использования взглядов, вам действительно не нужно делать особых действий. Если вы используете Code First с существующей базой данных и называете свои представления так, чтобы они соответствовали соглашениям EF (множественные версии имен сущностей), вам не нужно было делать что-то особенное.
Для того, чтобы функция EF с существующей базой данных вы просто должны изменить конструктор вашего DbContext
подкласса 1) ссылаться на строку соединения в явном виде и 2) отключить инициализатору:
public class ApplicationContext : DbContext
{
public ApplicationContext()
: base("ConnectionStringName")
{
Database.SetInitializer<ApplicationContext>(null);
}
// DbSets here
}
Если имена вид дон «т выстраиваться с конвенциями EF, то вы можете явно указать, что ваша компания должна ссылаться:
[Table("awesomefooview")]
public class Foo
{
...
}
Технически, вы все еще будете иметь методы API Entity Framework, которые позволяют писать, но так как подложка представляет собой вид, го ese будет увеличивать исключения при запуске. Если вы можете сделать что-то вроде запуска хранимой процедуры для внесения изменений, что косвенно разрешает доступ на запись, но технически само приложение не касается базы данных, тогда вы также можете использовать Entity Framework. См. Code First Insert/Update/Delete Stored Procedures для получения дополнительной информации (к сожалению, только EF6 и выше, хотя).
Спасибо Крису за ваш ответ. Чтобы прочитать данные, это довольно просто. Однако, когда мне нужно сохранить некоторые данные, это будет скучно, потому что выглядит так, как будто я должен создать Хранимую процедуру для каждой таблицы ... Для меня это не имело смысла. Еще раз спасибо. – HorseKing