实体框架与SQL Azure兼容吗?

4
我无法让Entity Framework与SQL Azure兼容。这是只有我遇到的问题还是本来就不兼容呢?(我尝试过使用VS2008中的原始版本以及更近期的VS2010 Beta 2版本)
为了检查这个问题,我创建了最简单的场景。向本地SQL Server 2008实例添加一个表。该表有两列,一个整数类型的主键和一个字符串列。我向表中添加了一行数据,值为(1, foobar)。然后,我将完全相同的设置添加到我的SQL Azure数据库中。
创建了一个控制台应用程序,并从本地数据库生成了一个EF模型。运行应用程序,一切正常,可以从一个简单的查询中返回单行数据。更新连接字符串以连接到SQL Azure,现在它失败了。它成功连接到SQL Azure数据库,但在处理结果时查询失败。
我使用异常信息跟踪了最初的问题。概念模型为我定义的单个实体集设置了属性Schema="dbo"。我删除了此属性,现在它出现了另一个错误...
"Invalid object name 'testModelStoreContainer.Test'."

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

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


截至2015年中期:是的,当前版本的Entity Framework与SQL Azure兼容。 - user272735
3个回答

3

虽然我自己没有这样做过,但我相信EF团队的成员已经这样做过了,Kevin Hoffman也是如此。

所以很可能只是在移植过程中你犯了一个错误。

听起来像是你试图手动更新EDMX(XML),从适用于本地数据库的那个版本更新。

如果你这样做,大多数更改将需要在EDMX(也称为SSDL)中的StorageModel元素中进行。但是听起来你一直在ConceptualModel(也称为CSDL)元素中进行更改。

我猜你只需要用SQL Azure模式替换SSDL中对dbo模式的所有引用即可。

希望这可以帮助到你

Alex


2
回答主要问题 - 是的,至少Entity Framework v4可以与SQL Azure一起使用 - 我没有真正尝试过初始版本(来自.Net Framework 3.5.SP 1)。
不久前,我完成了一个完整的项目,并在博客中记录了这一经历:http://www.sanderstechnology.com/?p=9961 希望这能有所帮助!

1

微软的Windows Azure文档包含如何使用ADO.NET实体框架连接Windows Azure SQL数据库

创建模型后,这些说明描述了如何使用Entity Framework与SQL Azure:

按照使用生成脚本向导(Windows Azure SQL Database)迁移数据库中的说明,将学校数据库迁移到SQL数据库。 在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>
按F5键运行应用程序,针对您的SQL数据库进行测试。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接