Праверка параметраў падлучэння з NHibernate

У нас ёсць праграма, дзе карыстальнікі могуць задаваць свае параметры падлучэння да базы дадзеных. Звычайныя падазраваныя ў тым ліку хост, порт, імя карыстальніка, пароль і імя табліцы. Мы падключаемся да базы дадзеных з дапамогай NHibernate. Тое, што мы хацелі б зрабіць, гэта быць у стане пабудаваць канфігурацыю з NHibernate, а затым праверыць параметры злучэння, перш чым працягнуць з іншымі аперацыямі; апавяшчэння карыстальніка аб няўдачы.

Ці магчыма гэта зрабіць праз NHibernate, або гэта патрабуе выкарыстання спецыяльных драйвераў для кожнага тыпу базы дадзеных, якія мы падтрымліваем і стварэнне карыстацкага метаду TestConnection() для кожнага тыпу?

2

2 адказы

Я разумею, што гэта стары пост - але я мяркую, што адказ на пытанне, ніколі не перашкодзіць.

Я не думаю, што ёсць спосаб відавочна паказаць NHibernate, каб праверыць радок падключэння. Тым не менш, калі вы асобнік SessionFactory ён будзе спрабаваць падлучыцца да базы дадзеных. Вы можаце абгарнуць SessionFactory стварэнне ў Try/перахопліваць і апрацоўваць памылку такім чынам.

Я выкарыстоўваю Fluent NHibernate, але я ўпэўнены, што наступны прыклад будзе яшчэ растлумачыць сітуацыю.

Dim sf as SessionFactory
Try
    sf = CreateSessionFactory()
Catch ex as FluentNHibernate.Cfg.FluentConfigurationException
    Messagebox.Show(ex.InnerException.Message)
End Try

<�Код> ex.InnerException.Message змяшчае фактычную памылку і паведаміць вам, калі:

  • Радок падлучэння ня дзейнічае
  • Сервер не можа быць знойдзены
  • Карыстальнік/перадача не можа быць заверана
1
дададзена

Каб наладзіць NHibernate ў вас ёсць два варыянты:

  1. Усталюйце дыялект, калі вы будуеце сесійны завод. Гэта будзе прызначаць разумныя значэнні па змаўчанні для ADO NHibernate і іншых значэнняў канфігурацыі.
  2. Ўручную ўсталюеце значэння канфігурацыі.

Тым не менш, у нейкі момант, вы павінны наладзіць NHibernate выкарыстоўваць адпаведны драйвер для базы дадзеных вы хочаце пагаварыць. Гэта азначае, што вам трэба, каб мець магчымасць будаваць заводы сесіі розных тыпаў (для падтрымоўваных тыпаў баз дадзеных). Для гэтага вам трэба больш, чым проста «хост, порт, імя карыстальніка, пароль і імя табліцы». Вы павінны ведаць тып базы дадзеных (дыялекце).

Калі вы збіраецеся проста спрабаваць падлучыцца да базы дадзеных з кожным кіроўцам, даступным вам, не ведаючы, што тып базы дадзеных, вы можаце сутыкнуцца з праблемамі, калі база дадзеных і гоман не супадаюць. Уявіце, што вы карыстаецеся SqlServer2008 гоман на SQLServer2005 машыне. Розніца ў дыялекце можа выклікаць пэўную функцыю SqlServer2008 вы выкарыстоўваеце не, відавочна, працаваць. Акрамя таго, калі вы не прыліпаюць да базавага SQL праз усе кода, вы можаце быць генерацыі Sql, які працуе, скажам, у PostgreSql, але не ў SqlServer (Think паслядоўнасці і такія).

Каб даведацца больш пра наладзе Nhibernate наступным чынам:

  1. Chapter 3: Session Factory Configuration. Specially sections 3.3, 3.4, 3.5 which talk about configuration parameters.

Апошняя заўвага, Nhibernate падтрымлівае некалькі баз дадзеных. Але для складаных слаёў дамена, дзе вы належыце на базы дадзеных канкрэтных канструкцый, ваш код ня робіць.

0
дададзена
Гэта шмат я - тое, што я шукаю спосаб сказаць: «Добра, вось гаспадар/порт/імя карыстальніка/пароль/имя_базы_данный, давайце пераканаемся, што мы можам паспяхова злучыцца перад працягам» на самай справе. У мяне ёсць усе конфігі драйвера працуе добра, калі гэтыя значэння сапраўдныя. Я спрабую ўбачыць, калі я магу выкарыстоўваць NHibernate для праверкі сапраўднасці тых, у У параметры. Зрабіць больш сэнсу?
дададзена аўтар MedTechDeveloper, крыніца