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

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

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

Вот Вам кастом аппендера, в который можно заложить любую структуру хранилища логов.
Как правило, стандартный 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
01.09.2010, 12:50
    #36823419
Курдль
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Специальные инструменты для разработки приложений с NHibernate
МСУ,

Спасибо. Изучу.
...
Рейтинг: 0 / 0
01.09.2010, 12:57
    #36823446
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Специальные инструменты для разработки приложений с NHibernate
Можно и без кастомизации аппендера решить проблему, но придётся подпихивать 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
02.09.2010, 15:49
    #36826237
Курдль
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Специальные инструменты для разработки приложений с NHibernate
МСУ,

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

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
02.09.2010, 16:10
    #36826329
SolYUtor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Специальные инструменты для разработки приложений с NHibernate
Курдль,

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

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

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

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

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

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

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

Не! Нафиг! Спасибо , я передумал!
...
Рейтинг: 0 / 0
03.09.2010, 11:03
    #36827526
Курдль
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Специальные инструменты для разработки приложений с NHibernate
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
03.09.2010, 11:10
    #36827553
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Специальные инструменты для разработки приложений с NHibernate
Курдлёчек, такая же беда. Более того, у меня даже не получилось запустить официальный шаревар, скаченный с сайта (без применения таблетоориентированного спец инструментария). Вчера тестировал на хэпэ и на семёре. При запуске тул сразу же валится, вещая о фатальном ерроре. После длительных мучений снёснах.
...
Рейтинг: 0 / 0
03.09.2010, 11:15
    #36827580
Курдль
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Специальные инструменты для разработки приложений с NHibernate
МСУБолее того, у меня даже не получилось запустить официальный шаревар, скаченный с сайтаПри запуске тул сразу же валится, вещая о фатальном ерроре. После длительных мучений снёснах.

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

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

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


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