28 февр. 2009 г.
TransactionScope и ASP.NET
23 февр. 2009 г.
Кто кого переупрямит...
22 февр. 2009 г.
Asus EEE PC 701 & проблемы WiFi
Проблема
Сейчас постоянно работаю через WiFi на удаленном рабочем столе, так что все проблемы в сети сразу на лицо. Недавно стал замечать, что временами от ASUS до WiFi роутера пинги идут по 1.5-4 секунды!, в то время как обычно 1 милисекунда, при этом ресурсы полностью свободны: запущен mstsc и нортон антивирус.Путь решения
Проблема решилась поднятием частоты процессора в 1.5 раза помощью программы для управления частотой процессора на Asus EEE PC eeectl.Обработка удаления в наследнике DataContext
Проблема: Через LINQ не удаляется объект
При просмотре запросов через DataContext.Log выясняется, что в базе даже запросы на удаление не уходят.Пример
var db = new DBDataContext(); db.Log = Console.Out; var q = from obj in db.PublicObjects where obj.ObjectID == new Guid("56547e27-be08-4440-962e-8e20bc1fb1ba") select obj; var o = q.Single(); db.PublicObjects.DeleteOnSubmit(o); db.SubmitChanges();Запрос нормально отрабатывается, но объект не удаляется и так раз за разом.
Причина
В DataContext для моей БД был определен partial метод DeletePublicObject, при этом базовый объект перестает отрабатывать свою схему удаленияpartial class DBDataContext { partial void DeletePublicObject(PublicObject instance) { instance.OnDetele(); } }
Решение
Нужно или самому выполнить MS-SQL комманду для удаления через ExecuteCommand или вызвать метод, который отрабатывает удаление по умолчанию - ExecuteDynamicDelete. Я выборал второй путь, вот что получилось.partial class DBDataContext { partial void DeletePublicObject(PublicObject instance) { instance.OnDetele(); ExecuteDynamicDelete(instance); } }Вставка и обновление записей обрабатываются аналогично, для них соответственно методы по умолчанию это ExecuteDynamicInsert и ExecuteDynamicUpdate.
16 февр. 2009 г.
Сокращение количества запросов к базе в LINQ
Проблема
Допустим у Вас есть объект LINQ, сопоставленный какой-то таблице, например Site и есть свойства этого объекта, хранящиеся в другой таблице, которые представлены свойством InterfaceSetting.
Вы выбираете сам объект, например так:
var q = from site in DB.Sites
where site.id == (Guid)Session["SiteID"] select site; CurrentSite = q.Single();Потом Вы обращаетесь к свойству CurrentSite.InterfaceSettings, при этом LINQ делает еще один запрос в базу, чтобы вытянуть связынный объект.
Путь решения проблемы
Если по логике приложения эта связь используется часто, то логично было бы сразу запрашивать связанный объект в одном запросе с основным. Это можно сделать при помощи LoadOptions объекта DataContext, например так: partial class DBDataContext{ partial void OnCreated() { var load_options = new DataLoadOptions(); // Настройки интерфейса всегда загружаем сразу вместе с сайтом, одним запросом к базе load_options.LoadWith<Site>(site => site.InterfaceSetting); LoadOptions = load_options; } }
13 февр. 2009 г.
Microsoft Visual Studio 2008 SP1 удаляет файл .designer.cs при редактировании .dbml
Суть проблемы
При редактировании структуры LINQ to SQL в .dbml файле и сохранении проекта пропадает файл .designer.cs, связанный с этой БД и проект не компилируется, т.к. отсутствует описание класса БД.Причина проблемы
Ошибка Visual Studio, проявляется когда в соответствующем .cs файле (например db.dbml соответствует db.cs) перед namespace стоят директивы using, например так:using System; using System.Linq; using System.Xml.Linq; namespace Site_constructor {
Путь обхода проблемы
Обойти проблему можно переместив директивы using внутрь namespace, чтобы стало так:namespace Site_constructor { using System; using System.Linq; using System.Xml.Linq; using System.Data.Linq;
Восстановление удаленного .designer.cs
Надо нажать правой кнопкой на .dbml файл и выбрать пункт "Run custom tool"Связанные ссылки
Источник пути обхода Тикет в обратной связи Microsoft9 февр. 2009 г.
Н-дя...
7 февр. 2009 г.
Формы титулования в царской России
6 февр. 2009 г.
Пенсионный фонд удивляет
Пенсионный фонд удивляет
3 февр. 2009 г.
Добавить HTTP-заголовок в asp.net
Response.AddHeader(“Header”, “value”);
Есть еще метод Response.Headers.Add(“Header”, “Value”), но он на asp.net 3.5 вызывает исключение
This operation requires IIS integrated pipeline mode
Так что лучше пользоваться первым методом.
Для чего нужна ScrollLock
Впервые за 16-летний опыт общения с компьютером я наткнулся на использования клавиши Scroll Lock на клавиатуре.
Если Scroll Lock включен, то в Excel при нажатии на курсорные клавиши не курсор двигается по ячейкам, а весь лист относительно экрана, а курсор остается на том месте, где был. Видимо это нужно для удобного обзора таблиц.
2 февр. 2009 г.
Ошибка при создании проекта Database Project в Visual Studio.
При создании проекта Database project стала появляться ошибка
An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)
Проблема оказалась в следующем:
При первой попытке создания у меня на компьютере небыло установлено никакой MS-SQL БД и Visual Studio выдавала ошибку подключения. Затем я установил MS-SQL Express, но результат остался прежним – ошибка появлялась, причем данные соединения не запрашивались.
Дело оказалось в том, что Visual Studio видимо первый раз попробовала подключиться к серверу localhost\ без именования экземпляра, это и запомнила, а MS SQL Express устанавливается с именем localhost\SQLEXPRESS
Решение проблемы
Удалил из реестра ветку (delete key)
HKEY_CURRENT_USER\Software\Microsoft\VisualStudio
Машина не заводится…
Пару дней назад завожу машину, не заводится… ладно думаю, аккум сел, поехал на такси. На следующий день прихожу снимать аккумулятор на зарядку и вижу, что его в общем-то упёрли…
TinyMCE, список ссылок
external_link_list_url="PageWithLinks", который может быть как статическим, так и динамически генерировать нужные ссылки, вот пример того, что должен отдавать файл:
var tinyMCELinkList = new Array(
// Name, URL
["Moxiecode", "http://www.moxiecode.com"],
["Freshmeat", "http://www.freshmeat.com"],
["Sourceforge", "http://www.sourceforge.com"]
);
Опцию нужно задавать при вызове инициализации TinyMCE:
tinyMCE.init({
...
external_link_list_url : "myexternallist.js"
});
Примеры взяты из документации: http://wiki.moxiecode.com/index.php/TinyMCE:Configuration/external_link_list_url
Для asp.net этот параметр задается в списке атрибутов объекта
<tinymce:TextArea ID="PageContent" theme="advanced" ... external_link_list_url="LinkList.aspx" runat="server" EnableViewState="False" />
Первые шаги на сноуборде
Как собрался
Получилось почти совершенно непредвиденно - девушка знакомая позвонила и говорит - поехали кататься, ну поехали говорю, в след. выходные... в результате поехали на след. день. До этого сноуборд только рядом видел, сам никогда не стоял.
Первый спуск
Доски и снаряжение взяли в прокат. Пришли на горку как одевать - никто из нас не знает, благо там уже кто-то катался и как одевать доску нам объяснили. Самое интересное, что чуть только на ней привстаешь - тут же начинаешь ехать по склону, так что просто стоять получилось далеко не с первого раза (а уже после нескольких спусков).
Первый раз поднимаюсь на сноуборде
Первый раз стою на ногах (точнее немного еду уже)
Спуск
Ну естественно я шлепнулся... Причем не просто шлепнулся, а хорошенько так еще покувыркался (эх... надо было снимать...) Второй раз тоже, но кувыркался уже меньше... Потом покатались еще и тут настала пора снимать видео
Потом с переменным успехом примерно час катания-валяния и самое тяжолое - поднимания обратно в горку (на этой мелкой горке подъемник не работает). И вот наконец-то я научился спускаться и просто горки мне показалось уже мало... взял еще на спуске небольшой ускоритель :)
Потом покатались еще немного и пошли домой - уставшие и довольные...