Это зависит от того, что Вы ищете, поскольку у каждого из них есть их за и против.
Spring.NET
является самым сформировавшимся, поскольку это выходит, Возникают из мира Java. Spring имеет очень богатый набор библиотек платформы, которые расширяют его для поддержки сети, Windows, и т.д. Castle Windsor
является одним из наиболее широко используемый в платформе.NET и имеет самую большую экосистему, высоконастраиваем / расширяемый, имеет пользовательское пожизненное управление, поддержку AOP, имеет свойственную поддержку NHibernate и является всеми вокруг потрясающего контейнера. Виндзор является частью всего стека, который включает Монорельсовую дорогу, Активную Запись, и т.д. сам NHibernate создает сверху Виндзора. Structure Map
имеет очень богатую и мелкомодульную конфигурацию через внутренний DSL. Autofac
контейнер МОК нового века со всем, им - свойственная поддержка функционального программирования. Это также проявляет другой подход на руководящем времени жизни, чем другие. Autofac является все еще очень новым, но он продвигает панель на том, что возможно с МОК. Ninject
я услышал, больше скелета с меньшем, больше подхода (слышал не опытный). Unity
: это от и поддерживается Microsoft (p& p). Единица имеет очень хорошую производительность и замечательную документацию. Это также высоконастраиваемо. Это не имеет всех дополнительных свойств, говорят что Замок / Карта Структуры. Так, таким образом, это действительно зависит от того, что важно для Вас. Я согласился бы с другими при движении и оценке и наблюдении, которому соответствует. Хорошая вещь - Вы, имеют хороший выбор пончиков вместо того, чтобы просто иметь необходимость иметь желе один.
Представления необходимо обновить, если базовые таблицы вообще изменятся. Это может изменить типы данных столбцов представления или переупорядочить его индексы. Следовательно, это необходимо знать. В противном случае вы бы запустили запрос к нему, и он довольно быстро взорвался бы.
Вам не нужно запускать sp_refreshview
для изменения представления. Только для изменения лежащих в основе таблиц.
Также, пожалуйста, не насмехайтесь над счастливым забавным шаром.
Редактировать: Просто запустил этот код (последовательно), чтобы попытаться воспроизвести вашу проблему. Я, к сожалению, не смог, так как он работал должным образом (SQL Server 2008):
create view MyView
as
select ProductKey, ProductID, ProductName, Price
from dbo.Products
select v.* from MyView v
alter view MyView
as
select ProductKey, ProductID, ProductName, Price*100 as MyPrice
from dbo. Products
select v.* from MyView v
Используйте WITH SCHEMABINDING в определении представления, чтобы избавиться от необходимости обновлять
И в сочетании с ALTER VIEW, а не конструктором
Edit, июль 2012 г. , по ссылке выше. Мой жирный шрифт
SCHEMABINDING
Привязывает представление к схеме базовой таблицы или таблиц. Когда указан SCHEMABINDING, базовая таблица или таблицы не могут быть изменены таким образом, чтобы это повлияло на определение представления . Само определение представления необходимо сначала изменить или отбросить, чтобы удалить зависимости от изменяемой таблицы. Когда вы используете SCHEMABINDING, select_statement должен включать в себя состоящие из двух частей имена (schema.object) таблиц, представлений или пользовательских функций, на которые есть ссылки. Все упомянутые объекты должны находиться в одной базе данных.
Представления или таблицы, которые участвуют в представлении, созданном с помощью предложения SCHEMABINDING , не могут быть отброшены , если это представление не будет удалено или изменено так, что оно больше не имеет привязки схемы. В противном случае компонент Database Engine выдает ошибку. Кроме того, выполнение операторов ALTER TABLE для таблиц, которые участвуют в представлениях, имеющих привязку схемы, завершается ошибкой , когда эти операторы влияют на определение представления.