无效的对象 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"/>
我的 Azure 网站与数据库相关联。我在 azure 中有两个网站,一个用于实时,另一个用于测试。当我创建测试网站时,我已将其与 azure 中的实时数据库链接,因为当时我没有测试数据库。我遇到了这个问题,因为我的实时数据库没有我的新表。解决方案:我将我的测试站点与 azure 中的测试数据库链接,现在工作正常。学到了一个很好的教训,与 web.config 文件中的连接字符串无关,你需要将站点链接到 azure 中的相应数据库。
基于新的信息:)让我们改变答案。
是否在网站配置中使用连接字符串变量?
这将允许您将测试网站和实时网站连接到同一个数据库。