我无法让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。
答案 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与实体框架一起使用:
按照How to: Migrate a Database by Using the Generate Scripts Wizard (Windows Azure SQL Database)中的说明将School数据库迁移到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="Data Source=<provideServerName>.database.windows.net;Initial Catalog=School;Integrated Security=False;User ID=<provideUserID>;Password=<providePassword>;MultipleActiveResultSets=True;Encrypt=True;TrustServerCertificate=False"" providerName="System.Data.EntityClient"/> </connectionStrings>
- 按F5以针对SQL数据库运行应用程序。
醇>