无效对象 dbo.UserShoppingItems - Azure IIS 和 SQL 服务器

Invalid object dbo.UserShoppingItems - Azure IIS & SQL server

已在 Azure 数据库和本地数据库 (sqlexpress 2008 r2) 中创建了两个 table 'UserShoppingItems' & 'UserShoppingBills'。我使用 dbcontext class(未使用 ado.net 实体数据库向导)为 tables 手动创建了实体映射,例如 'UserShoppingItem' 并使用以下代码进行映射。

"public DbSet<UserShoppingItem> UserShoppingItems {get; set;}"

我可以看到 table 存在于本地和 azure 服务器中,但是当我从 azure 运行站点时,收到一条错误消息

Invalid object'dbo.UserShoppingItems'and Invalid column name 'ShopId' from 'dbo.UserShoppingBills'

该站点是使用 asp.net mvc 4 和 entity framework 6.1.* 构建的。 Entity framework 已正确猜出 table 的名称,但无法找到它。即使我已经从 visual studio 使用我的本地 Web 服务器测试了 azure 数据库,从 SSMS 查询了数据库,所有这些都工作正常,除了从 azure web 服务器运行站点时。请帮助我确定问题的瓶颈。

EDIT:

public class UserShoppingItem
    {
       [Key]     
       [System.ComponentModel.DataAnnotations.Schema.Column(Order=0)]   
       public Int64 UserId { get; set; }
       [Key]
       [System.ComponentModel.DataAnnotations.Schema.Column(Order=1)]
       public Int64 ShopId { get; set; }       
       public int? ItemId { get; set; }        

    }

Azure 数据库服务器 - 连接字符串

因为我没有使用过ado.net实体数据模型向导来生成实体所以不需要使用 metadata=res:///xxx.csdl|res:///xxx.ssdl|res://*/xxx.msl;

<add name="xxxx" providerName="System.Data.SqlClient" connectionString="Data Source=tcp:xxxx.database.windows.net,1433;Initial Catalog=xxxxx_Test;User ID=xxxx@xxxx;Password=xxxxxx;MultipleActiveResultSets=True" />  

本地数据库服务器 - 连接字符串

<add name="xxxx" providerName="System.Data.SqlClient" connectionString="Data Source=.\sqlexpressr2,49454;Initial Catalog=MappedGeoDatabase-Dev;User ID=xxxx;Password=xxxx"/>

根据新信息 :) 让我们更改答案。

您是否在网站配置中使用连接字符串变量?

这样您就可以将测试网站和实际网站连接到同一个数据库。

我的 Azure 网站 link 使用数据库。我有两个天蓝色的网站,一个用于实时,另一个用于测试。当我创建测试网站时,我 link 使用 Azure 中的实时数据库对其进行了编辑,因为当时我没有测试数据库。我遇到这个问题是因为我的实时数据库没有我的新表。解决方案:我 link 在 Azure 中使用测试数据库编辑了我的测试站点,现在它运行良好。学到了一个与 web.config 文件中的连接字符串无关的很好的教训,您需要 link 您的站点在 azure 中具有适当的数据库。