使用Fluent NHibernate SQL Server CE无法创建驱动程序

时间:2012-06-01 10:22:14

标签: nhibernate sql-server-ce fluent

  

无法从NHibernate.Driver.SqlServerCeDriver, NHibernate, Version=3.3.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4创建驱动程序。

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

这是我尝试使用流畅的nHibernate时出现的错误!

我尝试通过配置的简单示例与本地数据库不兼容 使用这个dlls。

我的代码:

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 !!!!

2 个答案:

答案 0 :(得分: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.

答案 1 :(得分:1)

如果您来自.net核心,并且收到错误消息

  

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

假设您已通过NuGet安装了NHibernate,则需要确保已安装适当的Sql软件包。有几个非正式的System.Data.SqlServerCe。就我而言,我需要System.Data.SqlClient