Что я тут не так сделал? Я установил пакеты с нюгетерами nhibernate, fluentnhibernate и System.Data.SqlClient. Я новичок в nhibernate и ORM в целом.
Здесь код и ошибка:
public class Animal
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
}
public class AnimalMap : ClassMap<Animal>
{
public AnimalMap() {
Id(x => x.Id);
Map(x => x.Name);
Table("animals");
}
}
Demo.js
public class Demo
{
private static ISessionFactory _sessionFactor;
private static ISessionFactory SessionFactory{
get {
if(_sessionFactor == null) {
InitializeSessionFactory();
}
return _sessionFactor;
}
}
private static void InitializeSessionFactory () {
DbProviderFactories.RegisterFactory("System.Data.SqlClient", SqlClientFactory.Instance);
_sessionFactor = Fluently.Configure()
.Database(MySQLConfiguration.Standard
.ConnectionString(
"Server=localhost;Database=xxx;Uid=root;Pwd=666;"
))
.Mappings(mappings => mappings.FluentMappings
.AddFromAssemblyOf<Program>())
.ExposeConfiguration(cfg => new SchemaExport(cfg)
.Create(true, true))
.BuildSessionFactory();
}
public static ISession OpenSession() {
return SessionFactory.OpenSession();
}
}
Program.cs
static void Main(string[] args)
{
using (var session = Demo.OpenSession()) {
using (var transaction = session.BeginTransaction()) {
var animal = new Animal {
Name = "Cat"
};
session.Save(animal);
transaction.Commit();
}
}
}
Когда я запускаю это консольное приложение ядра .net, я получаю сообщение об ошибке ниже
Необработанное исключение. FluentNHibernate.Cfg.FluentConfigurationException: При создании SessionFactory использовалась неверная или неполная конфигурация. Проверьте коллекцию PotentialReasons и InnerException для получения более подробной информации.
---> FluentNHibernate.Cfg.FluentConfigurationException: При создании SessionFactory использовалась недопустимая или неполная конфигурация. Проверьте коллекцию PotentialReasons и InnerException для получения более подробной информации.
---> NHibernate.HibernateException: Не удалось создать драйвер из NHibernate.Driver.MySqlDataDriver, NHibernate, Version = 4.0.0.4000, Culture = нейтральный, PublicKeyToken =aa95f207798dfdb4. ---> System.Reflection.TargetInvocationException: исключение было сгенерировано целью вызова. ---> System.ArgumentException: указанное имя инварианта 'MySql.Data.MySqlClient' не найдено в списке зарегистрированных поставщиков данных .NET . в System.Data.Common.DbProviderFactories.GetFactory (String providerInvariantName, Boolean throwOnError) в System.Data.Common.DbProviderFactories.GetFactory (String providerInvariantName) в NHibernate.Driver.ReflectionBaseName, StringNameNameSigningSingringring ()Строка commandTypeName) в NHibernate.Driver.MySqlDataDriver..ctor ()
--- Конец трассировки стека внутренней исключительной ситуации --- в System.RuntimeTypeHandle.CreateInstance (тип RuntimeType, логический publicOnly, логический тип wrapExceptions, Boolean & canBendhond и canBeternal), Boolean & hasNoDefaultCtor) в System.RuntimeType.CreateInstanceDefaultCtorSlow (Boolean publicOnly, логическое wrapExceptions, Boolean fillCache) в System.RuntimeType.CreateInstanceDefaultCtor (Boolean тип PublicOnly, логический указатель на повышение класса, логический объектnonPublic, Boolean wrapExceptions) в System.Activator.CreateInstance(Тип type) в NHibernate.Bytecode.ActivatorObjectsFactory.CreateInstance (Тип type) в NHibernate.Connection.ConnectionProvider.ConfigureDriver (настройки IDictionary`2)
--- Конец внутренней трассировки стека исключений --- в NHibernate.Connection. ConnectionProvider.ConfigureDriver (параметры IDictionary'2) в NHibernate.Connection.ConnectionProvider.Configure (параметры IDictionary'2) в NHibernate.Connection.ConnectionProviderFactory.NewConnectionProvider (параметры IDictionary'2) в NHibernate.Tool.hbm2ddlExma1 scriptAction, Boolean execute, Boolean justDrop, TextWriter exportOutput) в NHibernate.Tool.hbm2ddl.SchemaExport.Execute (Action'1 scriptAction, Boolean execute, Boolean justDrop) в NHibernate.Tool.hbm2ddl.SchemaExport. , Boolean justDrop) в NHibernate.Tool.hbm2ddl.SchemaExport.Create (Boolean useStdOut, Boolean execute) в nhibernatetutorial.Demo. <> C.b__3_1 (Конфигурация cfg) в C: \ Users \ user \ nhibernatetutorial \ Demo.cs:строка 31 в FluentNHibernate.Cfg.FluentConfiguration.BuildConfiguration () --- Конец трассировки стека внутренних исключений --- в FluentNHibernate.Cfg.FluentConfiguration.BuildConfiguration () в FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory ()
1028--- Конец внутренней трассировки стека исключений --- в FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory () в nhibernatetutorial.Demo.InitializeSessionFactory () в C: \ Users \ user \ nhibernatetutorial \ Demo.cs: строка 24в nhibernatetutorial.Demo.get_SessionFactory () в C: \ Users \ user \ nhibernatetutorial \ Demo.cs: строка 16 в nhibernatetutorial.Demo.OpenSession () в C: \ Users \ user \ nhibernatetutorial \ Demo.cs: строка 37 в nhibernatetutorial.Program.Main (String [] args) в C: \ Users \ user \ nhibernatetutorial \ Program.cs: строка 9