实体框架是否与SQL Azure兼容?

时间:2009-12-12 10:23:55

标签: entity-framework azure-sql-database

我无法让Entity Framework对抗SQL Azure。这只是我还是不打算兼容? (我已尝试使用VS2008以及最近的VS2010 Beta 2版本的EF的原始版本)

为了检查这一点,我创建了最简单的场景。将单个表添加到本地SQL Server 2008实例。该表有两列,一个是integer类型的主键和一个字符串列。我向表中添加了一行,其值为(1,foobar)。然后,我在SQL Azure数据库中添加了完全相同的设置。

创建一个控制台应用程序并从本地数据库生成EF模型。运行应用程序,一切都很好,可以从一个简单的查询返回单行。更新连接字符串以连接到SQL Azure,现在它失败了。它连接到SQL Azure数据库没有问题,但查询在处理结果时失败。

我使用异常信息跟踪了最初的问题。概念模型具有为我的单个定义实体的实体集设置的Schema =“dbo”属性。我删除了这个属性,现在它失败并出现另一个错误......

"Invalid object name 'testModelStoreContainer.Test'."

其中'Test'当然是我定义的实体的名称,因此看起来它正在尝试从返回的结果中创建实体。但由于一些未知的原因无法解决这个微不足道的情况。

所以要么我犯了一个非常根本的错误,要么SQL Azure与EF不兼容?这对我来说似乎很疯狂。我想在我的WebRole中使用EF,然后在Silverlight客户端使用RIA Services。

3 个答案:

答案 0 :(得分:3)

虽然我自己没有这样做,但我很确定EF团队的成员和Kevin Hoffman一样。

所以可能只是你在移植过程中只走了一步。

听起来你试图手动更新EDMX(XML),而不是使用本地数据库。

如果这样做,EDMX(又名SSDL)中的StorageModel元素将需要进行大部分更改。但听起来你一直在改变ConceptualModel(又名CSDL)元素。

我的猜测是,您只需要使用SQL Azure架构中的任何架构替换SSDL中对dbo架构的所有引用。

希望这有帮助

亚历

答案 1 :(得分:2)

答案 2 :(得分:1)

Microsoft的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)中的说明将School数据库迁移到SQL数据库。

  2.   
  3. 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>
    
  4.   
  5. 按F5以针对SQL数据库运行应用程序。
  6.