具有.net核心NHibernate.Driver.MySqlDataDriver的Fluent-nhibernate

问题描述 投票:0回答:1

我在这里做错了什么?我已经安装了nhibernate,fluentnhibernate和System.Data.SqlClient nuget软件包。我是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 = neutral,PublicKeyToken = aa95f207798dfdb4创建驱动程序。---> System.Reflection.TargetInvocationException:调用的目标引发了异常。---> System.ArgumentException:在注册的.NET数据提供程序列表中找不到指定的不变名称'MySql.Data.MySqlClient'。在System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName,布尔throwOnError)在System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName)在NHibernate.Driver.ReflectionBasedDriver..ctor(字符串providerInvariantName,字符串driverAssemblyName,字符串connectionTypeName,字符串commandTypeName)在NHibernate.Driver.MySqlDataDriver..ctor()---内部异常堆栈跟踪的结尾---在System.RuntimeTypeHandle.CreateInstance处(RuntimeType类型,布尔publicOnly,布尔wrapExceptions,布尔&canBeCached,RuntimeMethodHandleInternal&ctor,布尔&hasNoDefaultCtor)在System.RuntimeType.CreateInstanceDefaultCtorSlow(布尔publicOnly,布尔wrapExceptions,布尔fillCache)在System.RuntimeType.CreateInstanceDefaultCtor处(布尔publicOnly,布尔skipCheckThis,布尔fillCache,布尔wrapExceptions)在System.Activator.CreateInstance处(类型类型,布尔值非公共,布尔值wrapExceptions)在System.Activator.CreateInstance(Type type)在NHibernate.Bytecode.ActivatorObjectsFactory.CreateInstance(Type 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.hbm2ddl.SchemaExport.Execute(Action'1 scriptAction,布尔执行,布尔justDrop,TextWriter exportOutput)在NHibernate.Tool.hbm2ddl.SchemaExport.Execute(Action'1 scriptAction,布尔执行,布尔justDrop)在NHibernate.Tool.hbm2ddl.SchemaExport.Execute(布尔useStdOut,布尔执行,布尔justDrop)在NHibernate.Tool.hbm2ddl.SchemaExport.Create(布尔useStdOut,布尔执行)在c:\ Users \ user \ nhibernatetutorial \ Demo.cs:第31行中的nhibernatetutorial.Demo。<> c.b__3_1(Configuration cfg)在FluentNHibernate.Cfg.FluentConfiguration.BuildConfiguration()---内部异常堆栈跟踪的结尾---在FluentNHibernate.Cfg.FluentConfiguration.BuildConfiguration()在FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory()

-内部异常堆栈跟踪的结尾-在FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory()在nhibernatetutorial.Demo.InitializeSessionFactory()在C:\ Users \ user \ nhibernatetutorial \ Demo.cs:第24行在C:\ Users \ user \ nhibernatetutorial \ Demo.cs:第16行的nhibernatetutorial.Demo.get_SessionFactory()中在C:\ Users \ user \ nhibernatetutorial \ Demo.cs:第37行的nhibernatetutorial.Demo.OpenSession()中在C:\ Users \ user \ nhibernatetutorial \ Program.cs:第9行的nhibernatetutorial.Program.Main(String [] args)中]

我在这里做错了什么?我已经安装了nhibernate,fluentnhibernate和System.Data.SqlClient nuget软件包。我是nhibernate和ORM的新手。这里的代码和错误:公共类...

c# asp.net-core nhibernate fluent-nhibernate
1个回答
1
投票

通过查看您的例外情况:

'MySql.Data.MySqlClient

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.