1

无法从NHibernate.Driver.SqlServerCeDriver, NHibernate, Version=3.3.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4.

内部异常:找不到程序集 System.Data.SqlServerCe 中的 IDbCommand 和 IDbConnection 实现。确保程序集 System.Data.SqlServerCe 位于应用程序目录或全局程序集缓存中。如果程序集在 GAC 中,请使用应用程序配置文件中的元素来指定程序集的全名。

这是我尝试使用 fluent nHibernate 时遇到的错误!

我尝试配置的简单示例不适用于使用此 dll 的本地数据库。

我的代码:

private static String ConnectionString = "Data Source = Database1.sdf";

public static ISessionFactory CreateSessionFactory()
{
        return Fluently.Configure()
            .Database(MsSqlCeConfiguration.Standard
            .ConnectionString(ConnectionString)
            .Driver<NHibernate.Driver.SqlServerCeDriver>()
            .Dialect<NHibernate.Dialect.MsSqlCeDialect>())
            .Mappings(m => m.FluentMappings.AddFromAssembly(System.Reflection.Assembly.GetExecutingAssembly()))
            .ExposeConfiguration(BuildSchema)
            .ExposeConfiguration(x => x.SetProperty("connection.release_mode", "on_close"))
            .BuildSessionFactory();
}

private static void BuildSchema(Configuration configuration)
{
        SchemaExport schemaExport = new SchemaExport(configuration);
        schemaExport.Execute(false, true, false);
}

谢谢!这很重要!

我发现它在 buildsessionfactory 中中断了...helpppp !!!

4

2 回答 2

6

如果您是从 .net 核心来的,并且您会收到错误消息

找不到程序集 System.Data.SqlServerCe 中的 IDbCommand 和 IDbConnection 实现。确保程序集 System.Data.SqlServerCe 位于应用程序目录或全局程序集缓存中。如果程序集在 GAC 中,请使用应用程序配置文件中的元素来指定程序集的全名。

假设您已经通过 NuGet 安装了 NHibernate,那么您需要确保安装了适当的 Sql 包。那里有几个非官方System.Data.SqlServerCe的。就我而言,我需要System.Data.SqlClient

于 2018-11-15T14:56:30.187 回答
2

你确定你的 bin 目录中有 NHibernate 的 Version=3.3.0.4000 吗?看起来您的 bin 目录中有不同的 NHibernate 版本。

如果您确定它在那里,请检查您的引用是否正确:

您的项目中是否有以下参考:

"System.Data.SqlServerCe"

它位于以下目录中:

"C:\Program Files\Microsoft SQL Server Compact Edition\v3.5\Desktop\System.Data.SqlServerCe.dll"

确保你有:

"Copy Local" to true.
于 2012-06-01T12:02:19.213 回答