powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Специальные инструменты для разработки приложений с NHibernate
25 сообщений из 29, страница 1 из 2
Специальные инструменты для разработки приложений с NHibernate
    #36823181
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Существуют ли инструменты для разработчиков приложений с NHibernate, позволяющие повысить производительность труда и качество продукта?
Например, удобно парсить Log4Net, создавать маппинги и т.п.
Вот один пример: http://nhprof.com/home
Есть ли бесплатные средства?
...
Рейтинг: 0 / 0
Специальные инструменты для разработки приложений с NHibernate
    #36823214
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Log4Net и руки. Этого достаточно.
P.S. Хотя, конечно, хочется лентяйского дизайнера, как в EF.
...
Рейтинг: 0 / 0
Специальные инструменты для разработки приложений с NHibernate
    #36823260
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУLog4Net и руки. Этого достаточно.
P.S. Хотя, конечно, хочется лентяйского дизайнера, как в EF.

Кстати, я Log4Net-то не научился конфигурить, чтобы он мне только нужные данные выдавал (проблемы с руками). Приходится каждый раз в стоге сена иголку искать - у меня сразу по запуску приложения лог-файл уже больше 100 КБ текста... :(
...
Рейтинг: 0 / 0
Специальные инструменты для разработки приложений с NHibernate
    #36823284
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курдльлог-файл уже больше 100 КБ текста... :(
Ну, надо смотреть, что логируете.
P.S. Я логирую всегда в БД. Плюс, использую кастомный аппендер (IAppender, IOptionHandler). Файлик на сервере - не серьезно. Тем более, могут возникнуть проблемы с конкурентным доступом.
...
Рейтинг: 0 / 0
Специальные инструменты для разработки приложений с NHibernate
    #36823306
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Я пока не создал ни одного пром. приложения на NH. Так что пока Log4Net использую только для разработки и отладки. Файла вполне хватает. Логирую все подряд, т.к. не сильно искал мануал по Log4Net.
Не подбросите? А еще лучше - "Best Practics".
...
Рейтинг: 0 / 0
Специальные инструменты для разработки приложений с NHibernate
    #36823357
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КурдльНе подбросите?

Вот Вам кастом аппендера, в который можно заложить любую структуру хранилища логов.
Как правило, стандартный log4net.Appender.AdoNetAppender не удовлетворяет различным требованиям.

CustomDbAppender.cs
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
using System;
using System.Data.SqlClient;
using log4net.Appender;
using log4net.Core;

public sealed class CustomDbAppender : IAppender, IOptionHandler
{
    private SqlConnection dbConnection;

    public string Name { get; set; }

    public string ConnectionString { get; set; }

    public void ActivateOptions()
    {
        dbConnection = new SqlConnection(ConnectionString);
        dbConnection.Open();
    }

    public void Close()
    {
        if (dbConnection != null)
        {
            dbConnection.Close();
        }
    }

    public void DoAppend(LoggingEvent loggingEvent)
    {
        SqlCommand command = dbConnection.CreateCommand();
        command.CommandText = "INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[User],[Guid]) VALUES (@Date, @Thread, @Level, @Logger, @Message, @User,@Guid)";
        command.Parameters.AddWithValue("@Date", loggingEvent.TimeStamp);
        command.Parameters.AddWithValue("@Thread", loggingEvent.ThreadName);
        command.Parameters.AddWithValue("@Level", loggingEvent.Level.Name);
        command.Parameters.AddWithValue("@Logger", loggingEvent.LoggerName);
        command.Parameters.AddWithValue("@Message", loggingEvent.RenderedMessage);
        command.Parameters.AddWithValue("@User", loggingEvent.UserName);
        command.Parameters.AddWithValue("@Guid", Guid.NewGuid());
        command.ExecuteNonQuery();
    }
}


SQL
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE TABLE [dbo].[Log](
	[Id] [int] IDENTITY( 1 , 1 ) NOT NULL,
	[Date] [datetime] NOT NULL,
	[Thread] [varchar]( 255 ) COLLATE Cyrillic_General_CI_AS NOT NULL,
	[Level] [varchar]( 50 ) COLLATE Cyrillic_General_CI_AS NOT NULL,
	[Logger] [varchar]( 255 ) COLLATE Cyrillic_General_CI_AS NOT NULL,
	[User] [varchar]( 50 ) COLLATE Cyrillic_General_CI_AS NULL,
	[Guid] [uniqueidentifier] NULL,
	[Message] [varchar]( 4000 ) COLLATE Cyrillic_General_CI_AS NOT NULL
) ON [PRIMARY]


Global.asax
Код: plaintext
1.
2.
3.
void Application_Start(object sender, EventArgs e) 
{
    log4net.Config.XmlConfigurator.Configure();        
}


XML
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
<?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
  </configSections>

  <log4net>
    <logger name="MyProject">
      <appender-ref ref="AdoNetAppender" />
    </logger>
    <appender name="AdoNetAppender" type="CustomDbAppender">
      <bufferSize value="1" />
      <connectionString value="Server=.;Database=Test;Trusted_Connection=Yes;" />
    </appender>
  </log4net>

  <connectionStrings />
  <appSettings/>
  
  <system.web>
    <customErrors mode="Off">
    </customErrors>
    <compilation debug="true" targetFramework="4.0"/>
    <pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"/>
  </system.web>
  
</configuration>


Samples
Код: plaintext
1.
2.
3.
4.
5.
6.
ILog log = LogManager.GetLogger("MyProject");
   
log.Debug("Отладка");
log.Info("Информация");
log.Warn("Предупреждение");
log.Error("Ошибка");
log.Fatal("Критическая ошибка");
...
Рейтинг: 0 / 0
Специальные инструменты для разработки приложений с NHibernate
    #36823419
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Спасибо. Изучу.
...
Рейтинг: 0 / 0
Специальные инструменты для разработки приложений с NHibernate
    #36823446
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно и без кастомизации аппендера решить проблему, но придётся подпихивать MDC.Set, что совсем не гламурно.

Web.config
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
<?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
  </configSections>

  <log4net>
    <logger name="MyProject">
      <appender-ref ref="AdoNetAppender" />
    </logger>
    <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
      <bufferSize value="1" />
      <connectionType value="System.Data.SqlClient.SqlConnection" />
      <connectionString value="Server=.;Database=test;Trusted_Connection=Yes;" />
      <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[User]) VALUES (@log_date, @thread, @log_level, @logger, @message, @user)" />
      <parameter>
        <parameterName value="@log_date" />
        <dbType value="DateTime" />
        <layout type="log4net.Layout.PatternLayout" value="%date{yyyy'-'MM'-'dd HH':'mm':'ss'.'fff}" />
      </parameter>
      <parameter>
        <parameterName value="@thread" />
        <dbType value="String" />
        <size value="255" />
        <layout type="log4net.Layout.PatternLayout" value="%thread" />
      </parameter>
      <parameter>
        <parameterName value="@log_level" />
        <dbType value="String" />
        <size value="50" />
        <layout type="log4net.Layout.PatternLayout" value="%level" />
      </parameter>
      <parameter>
        <parameterName value="@logger" />
        <dbType value="String" />
        <size value="255" />
        <layout type="log4net.Layout.PatternLayout" value="%logger" />
      </parameter>
      <parameter>
        <parameterName value="@message" />
        <dbType value="String" />
        <size value="4000" />
        <layout type="log4net.Layout.PatternLayout" value="%message" />
      </parameter>
      <parameter>
        <parameterName value="@user" />
        <dbType value="String" />
        <size value="50" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%X{user}" />
        </layout>
      </parameter>
    </appender>
  </log4net>

  <connectionStrings />

  <appSettings/>
  
  <system.web>
    <customErrors mode="Off">
    </customErrors>
    <compilation debug="true" targetFramework="4.0"/>
    <pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"/>
  </system.web>
  
</configuration>


SQL
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE TABLE [dbo].[Log] 
( 
	[Id] [int] IDENTITY ( 1 ,  1 ) NOT NULL, 
	[Date] [datetime] NOT NULL, 
	[Thread] [varchar] ( 255 ) NOT NULL, 
	[Level] [varchar] ( 50 ) NOT NULL, 
	[Logger] [varchar] ( 255 ) NOT NULL,
        [User] [varchar] ( 50 ) NULL, 
	[Message] [varchar] ( 4000 ) NOT NULL
)


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
ILog log = LogManager.GetLogger("MyProject");

if (HttpContext.Current.User != null && HttpContext.Current.User.Identity.IsAuthenticated)
{
    MDC.Set("user", HttpContext.Current.User.Identity.Name);
}

log.Debug("Отладка");

P.S. По мне лучше свой человеческий IAppender определить. Вообщем, разбирайтесь :)
...
Рейтинг: 0 / 0
Специальные инструменты для разработки приложений с NHibernate
    #36826237
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Установил я себе "NHibernate Profiler" триальный.
Посмотрел...
Никакого "лентяйского дизайнера" в нем нету :(
Он просто красивый вариант Log4Net. Точнее - аппендер.
И за какие шиши его разработчики просят минимум 200 европеанских?
Ладно, III-м сортом сойдет для отладки маппинга и критериев. Месяцок поюзаю и выброшу.
...
Рейтинг: 0 / 0
Специальные инструменты для разработки приложений с NHibernate
    #36826255
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КурдльНикакого "лентяйского дизайнера" в нем нету :(
Так то профайлер, откудава там лентяйский дизайнер-то, Курдлёчек?

P.S. На главной странице сайта же постиццо:

http://nhprof.com
•Cognitive application awareness
•Visual insight into the interaction between your database and application code.
•Analysis and detection of common pitfalls when using NHibernate.
•Analysis is delivered via perfectly styled SQL and linkable code execution.
•Supports NHibernate 1.2.x, 2.0.x and 2.1.x

КурдльОн просто красивый вариант Log4Net.
Не просто красивый, а удобный. Профайлер же.

КурдльТочнее - аппендер.
Не совсем.

КурдльИ за какие шиши его разработчики просят минимум 200 европеанских?
Та я его и не использую. Гламурь.
...
Рейтинг: 0 / 0
Специальные инструменты для разработки приложений с NHibernate
    #36826329
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курдль,

За гламуром сюда . Сам не юзаю.
...
Рейтинг: 0 / 0
Специальные инструменты для разработки приложений с NHibernate
    #36826354
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SolYUtorКурдль,

За гламуром сюда . Сам не юзаю.

А этот аж 300 европеанских!!!

Но боюсь, что для меня слишком гламурен. Хотя можно поробовать.

Предыдущий уже приностит свои плоды: "маппинг FetchJoin - самый эффективный!"
...
Рейтинг: 0 / 0
Специальные инструменты для разработки приложений с NHibernate
    #36826365
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SolYUtorКурдль, За гламуром сюда . Сам не юзаю.
.Могу ломаный подсуетить :)
...
Рейтинг: 0 / 0
Специальные инструменты для разработки приложений с NHibernate
    #36826391
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,
Тихо! Не палимся! :)

kurdl@mail.ru
...
Рейтинг: 0 / 0
Специальные инструменты для разработки приложений с NHibernate
    #36826395
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курдль, ну это же... противозаконно! Нет?
...
Рейтинг: 0 / 0
Специальные инструменты для разработки приложений с NHibernate
    #36826421
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУКурдль, ну это же... противозаконно! Нет?

Смотря как интерпретировать предложение из поста
...
Рейтинг: 0 / 0
Специальные инструменты для разработки приложений с NHibernate
    #36826447
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курдль, Вы уверены, что Вам нужен этот тул ? )
...
Рейтинг: 0 / 0
Специальные инструменты для разработки приложений с NHibernate
    #36826478
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Не! Нафиг! Спасибо , я передумал!
...
Рейтинг: 0 / 0
Специальные инструменты для разработки приложений с NHibernate
    #36827526
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SolYUtorКурдль,

За гламуром сюда . Сам не юзаю.

Спасибо!
Но я, к сожалению, так и не смог насладиться победой искусственного интеллекта над естественным :(
Честно добытая триальная версия (как и некоторые другие) затыкается на первых же шагах.
Она настолько гламурна, что я подозреваю почерк Сергея Зверева и соратников в ее создании.
- создаю проект (под NHibernate)
- подключаю СУБД - коннект проверен (попытки с ораклом и МС СКЛ 2008)
- выбираю схему, сущности
- делаю их реверс инжиниринг - получаю модель
- любуюсь на модель в квик-дизайнере
- нажимаю педаль "Validate ...", или "Generate ..."
и получаю ошибку:
Код: plaintext
1.
2.
3.
4.
Exception message:
-------------------------------
Exception type: MissingMethodException
Метод не найден: "Boolean SD.LLBLGen.Pro.ApplicationCore.Extensibility.FrameworkValidatorBase.ReportBinaryPkFieldsAsCorrectableMessage(SD.LLBLGen.Pro.ApplicationCore.ProjectClasses.Project)".
Из текста понятно, что это неожиданная ошибка. Она сопровождается странными деталями о путях, которых у меня в помине не было:
Код: plaintext
1.
2.
в SD.Tools.Algorithmia.Commands.Command`1.Do() в C:\Myprojects\VS.NET Projects\Algorithmia\SD.Tools.Algorithmia\Commands\Command.cs:строка 178
   в SD.Tools.Algorithmia.Commands.CommandQueue.PerformDoRedoCommand(Boolean performRedo) в C:\Myprojects\VS.NET Projects\Algorithmia\SD.Tools.Algorithmia\Commands\CommandQueue.cs:строка 151
Такие дела...
...
Рейтинг: 0 / 0
Специальные инструменты для разработки приложений с NHibernate
    #36827553
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курдлёчек, такая же беда. Более того, у меня даже не получилось запустить официальный шаревар, скаченный с сайта (без применения таблетоориентированного спец инструментария). Вчера тестировал на хэпэ и на семёре. При запуске тул сразу же валится, вещая о фатальном ерроре. После длительных мучений снёснах.
...
Рейтинг: 0 / 0
Специальные инструменты для разработки приложений с NHibernate
    #36827580
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУБолее того, у меня даже не получилось запустить официальный шаревар, скаченный с сайтаПри запуске тул сразу же валится, вещая о фатальном ерроре. После длительных мучений снёснах.

АНАЛОгично! ГЛУБОЧАЙШИЙ привет С.Звереву!
...
Рейтинг: 0 / 0
Специальные инструменты для разработки приложений с NHibernate
    #36828669
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А у него получилось .
...
Рейтинг: 0 / 0
Специальные инструменты для разработки приложений с NHibernate
    #36829256
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SolYUtorА у него получилось .

Свезло! Я не дошел в этом квэсте и до уровня "As an aside, I like this part of the code generation:"
...
Рейтинг: 0 / 0
Специальные инструменты для разработки приложений с NHibernate
    #36835584
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Беру свои слова обратно!
Программа LLBLGen работает нормально и к С.Звереву отношения не имеет.
А вот таблэтка, прилагаемая к ней, - имеет!
Установка триальной версии на "чистом" компе (куда LLBLGen с таблэткой еще не ставилась), дает положительный результат.
Поигрался - забавно. О практическом использовании пока не задумываюсь - все и без нее сделано.
...
Рейтинг: 0 / 0
Специальные инструменты для разработки приложений с NHibernate
    #36839442
mrbrooks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
КурдльБеру свои слова обратно!
Программа LLBLGen работает нормально и к С.Звереву отношения не имеет.

все таки тузла не абсолютно кошерна. SQLite не любит, а Ассесс любит. Как же так?!
...
Рейтинг: 0 / 0
25 сообщений из 29, страница 1 из 2
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Специальные инструменты для разработки приложений с NHibernate
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]