2009-12-12 234 views
4

我不能讓實體框架對SQL Azure的工作。這僅僅是我還是不打算兼容? (我曾嘗試使用VS2008以及更新的VS2010 Beta 2版的EF的原始版本)與SQL Azure的兼容實體框架?

要檢查這一點,我創建了最簡單的情況。將一個表添加到本地SQL Server 2008實例。該表有兩列,一個是integer類型的主鍵和一個字符串列。我向表中添加一行(1,foobar)。然後我將完全相同的設置添加到我的SQL Azure數據庫。

創建控制檯應用程序並從本地數據庫生成EF模型。運行應用程序並且一切都很好,單行可以從一個簡單的查詢中返回。更新連接字符串以連接到SQL Azure,現在失敗。它連接到SQL Azure數據庫時沒有問題,但查詢在處理結果時失敗。

我找到了最初的問題下使用的異常信息。概念模型有屬性模式=「DBO」設置爲我的單定義的實體的實體集。我刪除了這個屬性,現在它失敗,另一個錯誤......

"Invalid object name 'testModelStoreContainer.Test'." 

如果「測試」當然是我所定義的實體的名稱,所以它看起來像它試圖從返回創建實體結果。但由於某些未知的原因,無法解決這個微不足道的問題。

因此,無論我是否犯了一個非常基本的錯誤,或者SQL Azure與EF不兼容?這對我來說似乎很瘋狂。我想在我的WebRole中使用EF,然後在RIA服務中使用Silverlight客戶端。

+0

截至2015年中期:是當前版本的實體框架與SQL Azure兼容。 – user272735 2015-08-10 07:02:20

回答

3

雖然我自己沒有這樣做,但我非常肯定EF團隊的成員和Kevin Hoffman一樣。

所以這可能只是你在移植過程中走了一步而走入歧途。

這聽起來像你試圖手動更新EDMX(XML),從一個對本地數據庫的工作。

如果你這樣做的話,大部分的改變將在EDMX(也就是SSDL)的StorageModel元素中被需要。但是,這聽起來像你已經作出的ConceptualModel(又名CSDL)元素的變化。

我的猜測是你只需要將所有對SSDL中的dbo模式的引用替換爲SQL Azure模式的任何模式。

希望這有助於

亞歷

2

要回答的主要問題 - 是的,至少是實體框架V4可以使用SQL Azure的使用 - 我沒有誠實地與最初的版本嘗試(從.Net Framework 3.5。SP 1)。

有一段時間,我做了一個完整的項目和博客有關的經驗:http://www.sanderstechnology.com/?p=9961希望這可能有一點幫助!

1

微軟的Windows Azure文檔包含How to: Connect to Windows Azure SQL Database Using the ADO.NET Entity Framework

創建模型後,這些說明描述瞭如何使用SQL Azure的實體框架:

  1. How to: Migrate a Database by Using the Generate Scripts Wizard (Windows Azure SQL Database)下面的說明遷移的學校數據庫,SQL數據庫。

  2. SchoolEFApplication項目中,打開App.Config中文件。更改連接字符串,以便連接到您的SQL數據庫。

    <connectionStrings> 
        <add name="SchoolEntities" 
         connectionString="metadata=res://*/SchoolDataModel.csdl|res://*/SchoolDataModel.ssdl|res://*/SchoolDataModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=<provideServerName>.database.windows.net;Initial Catalog=School;Integrated Security=False;User ID=<provideUserID>;Password=<providePassword>;MultipleActiveResultSets=True;Encrypt=True;TrustServerCertificate=False&quot;" 
         providerName="System.Data.EntityClient"/> 
    </connectionStrings> 
    
  3. 按F5可以針對您的SQL數據庫運行應用程序。