2011-01-21 62 views
29

我升級我的主機MVC 3,但我試圖做一個「Hello World」使用SQLCE 4.0,但我剛:在遠程主機上使用SQL Server CE 4 MVC 3

對不起,處理您的請求時發生錯誤 。

我看到我的佈局和一切,但不是數據我看。

在本地主機工作正常

我:

<add name="PruebaContext" connectionString="Data Source=|DataDirectory|db.sdf" providerName="System.Data.SqlServerCE.4.0"/> 

爲的connectionString。

我把自衛隊作爲項目的一部分,我加入了System.Data.SqlServerCE.dll本地副本到真正的項目。

我沒有更多的想法。 connString,該DLL在/ bin中,並在localhost中工作。

任何想法?

謝謝。

編輯

我現在有一些日誌:

沒有上/ bin中的 「System.Data.SqlServerCE.dll」:

無法找到所請求的.Net框架數據提供者。它可能沒有安裝。

System.ArgumentException:無法找到請求的.Net Framework數據提供程序。它可能沒有安裝。

夠了。他們沒有SqlServerCE4。

隨着該DLL的本地副本,AKA /斌:

無法加載的SQL Server Compact對應的8482.版本的ADO.NET提供本地組件安裝SQL Server精簡的版本是否正確。有關更多詳細信息,請參閱知識庫文章974247。

異常詳細信息:System.Data.SqlServerCe.SqlCeException:無法加載對應於版本8482的ADO.NET提供程序的SQL Server Compact的本機組件。安裝正確版本的SQL Server Compact。有關更多詳細信息,請參閱知識庫文章974247。

KB說我需要x86和amd64的dll。我在某處讀到,如果我將兩個目錄複製到/ bin,如:/ bin/x86和/ bin/amd64。我從SqlServerCE 4安裝文件夾的私人文件夾複製了這些文件夾。現在我得到了:

ADO之間檢測到可能的文件版本不匹配。NET提供程序和SQL Server Compact的本機二進制文件,這可能導致錯誤的功能。這可能是由於存在多個不同版本的SQL Server Compact實例或者由於錯誤的二進制文件與SQL Server Compact二進制文件具有相同的名稱。請安裝匹配版本的SQL Server Compact二進制文件。

確定。在SQLServerCE4的根文件夾,我有一些dll文件太多,所以我刪除了兩個文件夾,並複製該DLL爲/ bin:

無法加載文件或程序集「文件:/// C:\ HostingSpaces \ jesusrod \ foxandxss.net \ wwwroot \ mvc3 \ bin \ sqlceca40.dll'或其依賴項之一。預計該模塊將包含程序集清單。

我認爲,我嘗試了所有的東西。 Scottgu說,SqlServerCE 4應該在沒有安裝的任何服務器上工作。

+0

看看事件日誌。該錯誤應記錄在那裏。 – 2011-01-22 14:13:07

+0

我不知道我是否看到正確的地方,但我的主機似乎沒有日誌系統。 – 2011-01-22 14:18:13

+0

Scott Gu是錯誤的,我在完全非雲環境中的許多地方都遇到類似的問題。只是直升Win2008。 :(希望我能想出它很快。 – Adron 2011-10-15 20:47:38

回答

31

我不喜歡迴應我自己的回答,但經過數小時的工作,我已經得到了答案!

我們需要:

的NuGet(優於從複製程序文件中的DLL)

用的NuGet我們安裝:

EFCodeFirst

SqlServerCompact

EFCodeFirst.SqlServerCompact

的問題是,EF需要另一個DLL用於SQL CE 4(System.Data.SqlServerCe.Entity.dll),我們需要把一些配置上的web.config:

<system.data> 
    <DbProviderFactories> 
     <remove invariant="System.Data.SqlServerCe.4.0" /> 
     <add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" /> 
    </DbProviderFactories> 
    </system.data> 

就這樣,所有的工作中。我看到了5個不同的錯誤,所以我們需要:

從SQL CE 4,EF dll,web.config中的配置和本機DLL(從NuGet下載庫的軟件包目錄)的2 DLL。

似乎在web.config配置是指向SQL CE .dll文件和具體版本的RTM包的版本是不同的。我無法找到具體的版本,所以我使用NuGet的.dll。

就是這樣,遠程主機上的SQL CE 4 + EF。

2

這看起來像是一個具有留在一個項目中,你已經更換包括沒有清理的文件數據的多箇中間位產生的問題。

我建議做一個Build-> Clean all,然後確保所有的引用都是新的,正確的DLL,然後確保沒有任何舊文件或引用仍然在任何地方你的項目。一旦完成就試圖重建。

因爲這是一個Hello World項目,它可能更容易只是從頭開始一個新項目,幷包括正確的dll在那裏。

+0

這已經完成了,項目是新的,我清理了它,dll是正確的。我發佈它,而不僅僅是複製。 – 2011-01-31 13:35:47

4

你需要確保你有本地SQL CE在您的私人應用程序目錄,除了管理一個4.0的DLL(例如\ BIN)。

複製他們從 「C:\ Program Files文件(x86)的\微軟SQL Server精簡版\ V4.0 \私人\ AMD64」(或x86如果你有一個32位的應用程序)。

部署MSVCR90.dll也很明智,它也是明顯的。查看C:\ Program Files(x86)\ Microsoft SQL Server Compact Edition \ v4.0 中的文檔,以獲取有關所需DLL和重新分發的更多信息。

21

只要使用菜單「項目/添加可部署的依賴......」 我不知道,如果它是的Visual Studio 2010只SP 1。

1

我遇到了同樣的問題。試圖在我的goDaddy帳戶中使用代碼優先的SQL CE 4.0應用程序。

我開始根據上面的線程和其他教程搞亂各種DLL文件,但似乎沒有任何工作。有些東西不見了。然後我閱讀了關於添加可部署的依賴關係的響應。

我做到了,創建了_bin_deployableAssemblies文件夾。然後,我從我的bin文件夾中刪除除了我的核心項目的DLL之外的所有內容,並將_bin_deployableAssemblies中的所有內容複製到bin文件夾中。

我清理了我的goDaddy應用程序的bin文件夾中的所有內容,並重新啓動了這些文件。這工作。該應用程序加載,如果我對這些類進行codefirst更改,那麼dbcontext會爲我重新創建數據庫。當然,我不想在製作中使用它,但我想知道一切正常。

我曾嘗試使用有關部署MVC應用程序的託管環境(他們使用Cytanium舉辦爲榜樣)的ASP教程,但它並沒有對我的工作GoDaddy的。我不得不手動複製文件。

謝謝大家。這對我能夠感覺舒適的MVC和EF繼續邁出了巨大的一步。