alex.algel
- Вопросы
- Ответы
Имя | Алексей |
Возраст | Неизвестно |
Сайт | http://alexey-algel.blogspot.com |
Неизвестно | |
Участвует в проекте | 1022 дн., 13 час., 51 мин. |
Последняя активность | 683 дн., 4 час., 57 мин. назад |
Ответы
Перейти к вопросу →
В принципе никто не запрещает управлять куками из кода..
HttpCookie myCookie = new HttpCookie("UserSettings");
myCookie["Font"] = "Arial";
myCookie["Color"] = "Blue";
myCookie.Expires = DateTime.Now.AddDays(30);
Response.Cookies.Add(myCookie);
Перейти к вопросу →
Во многих приложениях необходимо хранить и использовать уникальную для пользователя информацию. При посещении веб-узла пользователем можно использовать сохраненную информацию, чтобы представить пользователю персонализированную версию веб-приложения. Для персонализации приложения необходим ряд элементов: необходимо хранить информацию с помощью уникального идентификатора пользователя, иметь возможность распознавать пользователей при повторном посещении и извлекать сведения о пользователе по мере необходимости. Для упрощения приложений можно использовать функцию профилей ASP.NET, способную выполнять все эти задачи.
Функция профилей ASP.NET связывает информацию с отдельным пользователем и хранит ее в постоянном формате. Профили позволяют управлять сведениями о пользователях без необходимости создавать и поддерживать собственную базу данных. Кроме того, функция профилей ASP.NET предоставляет пользовательские сведения, используя интерфейс API со строгой типизацией, который доступен в любой части приложения.
С помощью профилей можно хранить объекты любого типа. Функция профилей обеспечивает функцию универсального хранения, позволяющую определять и поддерживать практически любой тип данных; данные при этом по-прежнему предоставляются со строгой типизацией.
Подробности в МСДН
Перейти к вопросу →
Выдержка из "Application Architecture Guide":
Основное преимущество хранимых процедур в том, что они обеспечивают уровень абстракции для базы данных, а это минимизирует зависимость кода приложения от изменений схемы базы данных. Также упрощается реализация и управление безопасностью, поскольку можно ограничить доступ ко всему, кроме хранимой процедуры, и использовать механизмы безопасности, обеспечивающие детализированную защиту и поддерживаемые большинством баз данных (хотя не забывайте, что это может помешать использовать преимущества пула подключений).
Основное преимущество динамических SQL-выражений в том, что зачастую они считаются более гибкими, чем хранимые процедуры, и могут обеспечить более быструю обработку. Многие инфраструктуры O/RM самостоятельно генерируют динамические запросы, существенно сокращая объем кода, который должен быть написан разработчиками.
Выбирая между хранимыми процедурами и динамическим SQL, руководствуйтесь следующими рекомендациями:
- Для небольшого приложения с единственным клиентом и несколькими бизнес-правилами динамический SQL часто является лучшим выбором.
- Для большого приложения с множеством клиентов продумайте, как обеспечить необходимую абстракцию. Примите решение, где эта абстракция должна находиться: в базе данных в форме хранимых процедур или в слое доступа к данным приложения в форме шаблонов доступа к данным или продуктов O/RM.
- Хранимые процедуры позволяют осуществлять операции с использованием большого количества данных ближе к данным, что может улучшить производительность.
- Использование хранимых процедур для доступа к базе данных позволит максимально сократить зависимость кода приложения от изменений схемы базы данных. Это поможет изолировать и максимально сократить количество изменений в коде приложения при нормализации или оптимизации схемы. Изменения во входных и выходных параметрах хранимой процедуры могут влиять на код приложения, но часто эти изменения можно изолировать в отдельных компонентах, выполняющих доступ к хранимой процедуре. Изолировать и максимально сократить изменения в коде приложения при обновлении схемы помогут и инфраструктуры O/RM.
- Принимая решение об использовании динамических SQL-запросов необходимо понимать, какое влияние будут оказывать изменения в схемах базы данных на приложение. Поэтому следует реализовывать слой доступа к данным таким образом, чтобы он обеспечивал отделение бизнес-компонентов от выполнения запросов базы данных. Такое отделение помогут реализовать такие шаблоны как Query Object и Repository. O/RM-инструменты позволяют полностью отделить бизнес-компоненты от выполнения запросов к базе данных.
- Учтите квалификацию группы, которая будет заниматься разработкой приложения. Если ваши разработчики не знакомы с программированием баз данных, выбирайте инструменты и шаблоны, более привычные вашим разработчиком.
- Подумайте о поддержке отладки. Разработчикам приложения будет проще проводить отладку динамического SQL.
Перейти к вопросу →
На CodeProject есть WPF TreeListView Control:
В принципе вполне работоспособен, хотя для себя пришлось чуть-чуть доработать.
Перейти к вопросу →
Есть сайт, созданный специально для того что бы собрать в одном месте различные Extension methods. Находится тут: http://www.extensionmethod.net/
Перейти к вопросу →
Можно воспользоваться преимуществами RoutedEvents:
<controls:MyButtonsGroup Button.Click="OnButtonClick" />
В этом случае метод OnButtonClick будет вызван при нажатии любой из кнопок внутри контрола.
Перейти к вопросу →
Посмотрите на DataAdapter и на DataSet. Вкратце в DataAdapter настраиваются команды на получение изменение и удаление данных, а DataSet является контейнером для данных, и может быть источником данных для вашего грида. В DataSet запоминаются добавленные измененные и удаленные данные, и на основании этой информации DataAdapter понимает какие команды использовать при сохранении изменений в базу.
Перейти к вопросу →
В простых сценариях можно воспользоваться стандартным механизмом предоставляемым WPF:
<Window.InputBindings>
<KeyBinding Key="D"
Modifiers="Control"
Command="{Binding DeleteItemCommand}"
CommandParameter="{Binding ElementName=_projectTreeView, Path=SelectedItem, Mode=OneWay}"/>
</Window.InputBindings>
Если необходимо хранить сочетания клавиш отдельно от разметки, то можно написать свой класс наследник от InputBinding в котором реализовать необходимую логику. Я реализовывал похожую задачу, можно почитать здесь: Горячие клавиши в WPF
Если нужно зарегистрировать глобальные горячие клавиши, то об этом можно почитать в статье: Регистрация горячей клавиши (hotkey) в системе для WPF приложения
Перейти к вопросу →
Можно в обработчике сделать проверку на источник события, добавив следующую строку перед оператором switch
if (e.OriginalSource != tcMain) return;
Перейти к вопросу →
Попробуй SCOPE_IDENTITY()
Возвращает последнее значение идентификатора, вставленное в столбец идентификаторов в той же области. Областью является модуль, что подразумевает хранимую процедуру, триггер, функцию или пакет. Таким образом, две инструкции принадлежат одной и той же области, если они находятся в одной и той же хранимой процедуре, функции или пакете.
подробнее в MSDN