我在这里做错了什么?我已经安装了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的新手。这里的代码和错误:公共类...
通过查看您的例外情况:
'MySql.Data.MySqlClient