无效的对象 dbo.UserShoppingItems - Azure IIS & SQL server.

本文关键字:amp SQL server IIS Azure 对象 dbo UserShoppingItems 无效 | 更新日期: 2023-09-27 18:35:50

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

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

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

Invalid object 'dbo.用户购物项目and Invalid column name 'ShopId' from 'dbo.UserShoppingBills' .

该网站是使用 asp.net mvc 4 和实体框架 6.1.* 构建的。实体框架已正确猜测表的名称,但找不到它。即使我已经从Visual Studio使用本地Web服务器测试了Azure数据库,从SSMS查询了数据库,除了从Azure Web服务器运行站点外,所有数据库都工作正常。请帮助我确定问题的瓶颈。

编辑:

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"/>

无效的对象 dbo.UserShoppingItems - Azure IIS & SQL server.

我的 Azure 网站与数据库相关联。我在 azure 中有两个网站,一个用于实时,另一个用于测试。当我创建测试网站时,我已将其与 azure 中的实时数据库链接,因为当时我没有测试数据库。我遇到了这个问题,因为我的实时数据库没有我的新表。解决方案:我将我的测试站点与 azure 中的测试数据库链接,现在工作正常。学到了一个很好的教训,与 web.config 文件中的连接字符串无关,你需要将站点链接到 azure 中的相应数据库。

基于新的信息:)让我们改变答案。

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

这将允许您将测试网站和实时网站连接到同一个数据库。