2009-12-12 71 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数据库运行应用程序。