Ответы пользователя gor - CodeHelper

gor

gor
Карма 222
Имя Алексей
Возраст 29
Сайт http://gorbach.wordpress.com/
Twitter @g0r
Участвует в проекте 733 дн., 9 час., 16 мин.
Последняя активность 643 дн., 10 час., 30 мин. назад
Программитс ;)

Ответы

Новые Лучшие
1
2
Перейти к вопросу →

Если установлено fetch="join", то NHibernate всегда будет использовать в запросе LEFT OUTER JOIN для загрузки дочерних сущностей. При этом lazy="true" не имеет смысла.

Попробуйте fetch="join" заменить на fetch="select"

Перейти к вопросу →

Для этого надо использовать функцию ShellExecute. Или класс Process в .Net. Вот пример:

	string commandText = @"путь к файлу";
	var proc = new System.Diagnostics.Process();
	proc.StartInfo.FileName = commandText;
	proc.StartInfo.UseShellExecute = true;
	proc.Start();

В качестве пути к файлу можно даже использовать вот такую строку: mailto:anyone@someemail.com, при этом будет открыта почтовая программа по умолчанию.

Перейти к вопросу →

Можно вот так:

var str = "lalallalala";
var s = new MemoryStream(Encoding.UTF8.GetBytes(str));
Перейти к вопросу →

Если БД уже существует, то можно воспользоваться встроенным мастером в Management Studio. Клацаешь правой кнопкой на экспортируемой схеме, далее Tasks -> Generate Scripts.

Перейти к вопросу →

Можно с помощью таска XmlUpdate:

<Target Name="ConfigUpdate" >
	<XmlUpdate 
      XPath="/epxpression/epxress[@name='PropertyName']/value"
	  FilePath="$(WebApplicationFolder)\web.config"
	  Value="NewValue"/>
</Target>

Для того чтобы использовать этот таск надо скачать msbuild community task (http://msbuildtasks.tigris.org/)

Перейти к вопросу →

Достаточно добавить в CSS:

    hr { height: 20px; background-image: url(image.png); }
Перейти к вопросу →

Все зависит от природы данных. Если это просто строка, которая уже существует в памяти, то все равно. Response.OutputStream может быть более эфективным при чтении данных например из файла или из сетевого ресурса блоками. Однако в этом случае имеет смысл использовать FileStreamResult.

Перейти к вопросу →

Мне очень помагает Ctrl+Alt+F11 - подсветить использование переменной в коде.

Перейти к вопросу →

1) Еще можно провести небольшой рефакторинг получения данных из бд. Вместо

    SqlConnection cn = new SqlConnection(strConn);
    SqlCommand cmd = new SqlCommand("Select FeedID, Feed, Nameoffeed FROM edik_1", cn);
    try
    {
        cn.Open();
        SqlDataReader rdr = default(SqlDataReader);
        rdr = cmd.ExecuteReader();
        while (rdr.Read())
        {
            dataGridView1.Rows.Add(rdr["FeedID"], rdr["Feed"], rdr["Nameoffeed"]);
        }
        rdr.Close();
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.ToString());
    }
    finally
    {
        if ((cn != null))
        {
            cn.Close();
        }
    }

Лучше написать:

using (SqlConnection cn = new SqlConnection(strConn))
using (SqlCommand cmd = new SqlCommand("Select FeedID, Feed, Nameoffeed FROM edik_1", cn))
{
    try
    {
        cn.Open();
        SqlDataReader rdr = cmd.ExecuteReader();
        while (rdr.Read())
        {
            dataGridView1.Rows.Add(rdr["FeedID"], rdr["Feed"], rdr["Nameoffeed"]);
        }
        rdr.Close();
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.ToString());
    }
}

Как правило конструкция using экономит несолько строк.

2) Как правило если есть желание для участка кода написать комментарий типа /*Загрузка таблицы из базы*/ то лучше выделить этот участок в отдельный метод.

Перейти к вопросу →

Я обычно в конструкторе веб приложения (класс, который наследуется от System.Web.HttpApplication) добавляю следующий код:

BeginRequest += (sender, args) =>
{
    try
    {
    	CurrentSession = NHibernateManager.OpenSession();
    }
    catch (Exception ex)
    {
    	_log.Error(ex);
    	throw;
    }
};
EndRequest += (sender, args) =>
{
    if (CurrentSession != null) CurrentSession.Dispose();
};

Который при каждом новом запросе создает сессию. И при выполнении запроса уничтожает её. Сессия NHibernate хранится в контексте текущего запроса, и доступна везде в приложении. Для доступа к ней я использую StructureMap, но это уже детали.

    public static ISession CurrentSession
    {
        get { return (ISession)HttpContext.Current.Items["current.session"]; }
        set { HttpContext.Current.Items["current.session"] = value; }
    }

1
2
v1.7.123.556
© 2009—2010 CodeHelper FAQ | О сайте | Обратная связь | История изменений | Статьи
Creative Commons LicenseМатериалы сайта распространяются под лицензией Creative Commons Attribution-Share Alike 3.0 Unported.