2012-03-31 3 views
1

Ich bin ein Neuling bei NHibernate also bitte einfach auf mir gehen, wenn ich eine dumme Frage gestellt habe ...NHibernate Tutorial Laufzeitfehler: HibernateException

ich folgende bin das Tutorial für NHibernate geschrieben here und sind immer ein Laufzeitfehler vom Typ „HibernateException“

der betreffende Code sieht wie folgt aus:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using FirstSolution; 
using NHibernate.Cfg; 
using NHibernate.Tool.hbm2ddl; 
using NUnit.Framework; 

namespace FirstSolution.Tests 
{ 
    [TestFixture] 
    public class GenerateSchema_Fixture 
    { 
     [Test] 
     public void Can_generate_schema() 
     { 
      var cfg = new Configuration(); 
      cfg.Configure(); 
      cfg.AddAssembly(typeof(Product).Assembly); 

      new SchemaExport(cfg).Execute(false, true, false); 
     } 
    } 
} 

die Linie ich die Störung erhalte an ist:

cfg.AddAssembly(typeof(Product).Assembly); 

Die am weitesten innen Ausnahme ist:

The IDbCommand and IDbConnection implementation in the assembly System.Data.SqlServerCe could not be found 

Und hier ist mein Stack-Trace:

at NHibernate.Connection.ConnectionProvider.ConfigureDriver(IDictionary`2 settings) 
    at NHibernate.Connection.ConnectionProvider.Configure(IDictionary`2 settings) 
    at NHibernate.Connection.ConnectionProviderFactory.NewConnectionProvider(IDictionary`2 settings) 
    at NHibernate.Tool.hbm2ddl.SchemaExport.Execute(Action`1 scriptAction, Boolean export, Boolean justDrop) 
    at NHibernate.Tool.hbm2ddl.SchemaExport.Execute(Boolean script, Boolean export, Boolean justDrop) 
    at FirstSolution.Tests.GenerateSchema_Fixture.Can_generate_schema() in C:\Users\Kash\Documents\Visual Studio 2010\Projects\FirstSolution\FirstSolution\GenerateSchema_Fixture.cs:line 23 
    at HibernateUnitTest.Form1.button1_Click(Object sender, EventArgs e) in C:\Users\Kash\Documents\Visual Studio 2010\Projects\FirstSolution\HibernateUnitTest\Form1.cs:line 23 
    at System.Windows.Forms.Control.OnClick(EventArgs e) 
    at System.Windows.Forms.Button.OnClick(EventArgs e) 
    at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent) 
    at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) 
    at System.Windows.Forms.Control.WndProc(Message& m) 
    at System.Windows.Forms.ButtonBase.WndProc(Message& m) 
    at System.Windows.Forms.Button.WndProc(Message& m) 
    at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) 
    at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) 
    at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) 
    at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg) 
    at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData) 
    at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context) 
    at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context) 
    at System.Windows.Forms.Application.Run(Form mainForm) 
    at HibernateUnitTest.Program.Main() in C:\Users\Kash\Documents\Visual Studio 2010\Projects\FirstSolution\HibernateUnitTest\Program.cs:line 18 
    at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) 
    at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) 
    at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 
    at System.Threading.ThreadHelper.ThreadStart_Context(Object state) 
    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) 
    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
    at System.Threading.ThreadHelper.ThreadStart() 

ich sicher gemacht haben, dass System.Data.SqlServerCe referenziert ist und dass seine Copy Local Eigenschaft auf True. Der Fehler besteht jedoch weiterhin. Ihre Hilfe wäre willkommen. Vielen Dank.

+2

Haben Sie den Verweis auf 'System.Data.SqlServerCe' sowohl zum Hauptprojekt als auch zum Testprojekt hinzugefügt? Testen Sie auf x86 oder x64-Computer? – surfen

+0

Hi surfen, ich habe gerade versucht, die Referenz zum Testprojekt hinzuzufügen und trotzdem das gleiche Ergebnis zu bekommen. Ich teste auf einer x64-Maschine. – Kashif

+0

Ich habe vergessen, die Eigenschaft 'Copy Local' für die Referenz im Testprojekt auf 'true' zu setzen. Es stürzt nicht mehr in dieser Zeile ab. Ich muss sehen, ob es als nächstes funktioniert. Vielen Dank! – Kashif

Antwort

2

als Antwort Kommentare kopiert, da es der Fall zu sein, stellt sich heraus:

Sie den Verweis auf System.Data.SqlServerCe Stellen Sie sicher, hinzufügen und CopyLocal=true auf beide das Hauptprojekt und Testprojekt.