【问题标题】:Can't see the table created with EF and code-first in Azure在 Azure 中看不到使用 EF 和代码优先创建的表
【发布时间】:2014-05-27 06:54:41
【问题描述】:

我已经运行以下几行来在我的数据库中创建一行。

Hazoo hazoo = new Hazoo { Name = "Ha Zoo" };
context.Hazoos.Add(hazoo);
context.SaveChanges();

类型定义如下。

[Table("Hazoos")]
public class Hazoo
{
  [Key]
  public int HazooId { get; set; }
  public String Name { get; set; }
}

我的 Azure 帐户中有一个数据库,当我运行以下 SQL 时

select * from Hazoos

我收到一条红色消息,告诉我:对象名称“Hazoos”无效。起初我认为连接或类似问题存在一些问题。但是,根据日志,命令执行正确且成功。

所以我想 - 嘿,让我们看看我们是否可以通过这一行检索所述数据。

List<Hazoo> hazoos = context.Hazoos.ToList<Hazoo>();

令我惊讶的是,它就在那里!三个同名 Hazoo 实例并随后提高索引。

我的数据存储在哪里?!我想使用 Azure Web 客户端列出它来管理我的数据库。我试图通过

查看数据库中的内容
select * from information_schema.tables

但据此,任何地方都没有危险......

【问题讨论】:

  • @ErikEJ 我得到了手动创建的表的结果(无论是在使用 use MyCoolDb 还是不使用时。遗憾的是,这两种方法都没有给我带来任何成功由 EF 创建...

标签: c# sql entity-framework azure ef-code-first


【解决方案1】:

我也遇到了同样的问题,我的上下文基础构造函数参数与 web.config 中的连接字符串名称不匹配。

我相信这些表实际上是在 localdb 上成功创建的。

public MyDbContext() : base("MyDbContext") {}

<connectionStrings>
<add name="MyDbContext" providerName="System.Data.SqlClient" connectionString="Server=tcp:servername.domain.win.net,1433;Database=MyDb;User ID=appuser@servername;Password=password;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"/>
</connectionStrings>

【讨论】:

  • 你能把配置文件的相应行也发一下吗?构造函数是自动生成的,但基础参数不正确吗?或者它是自动生成的,根本没有调用基础?
  • 我用整个连接字符串更新了帖子(敏感信息用户/服务器名称,密码被替换)。我的 MyDbContext 完全是手动输入的,而不是自动生成的。我只是打错了基本参数,它与 web.config 中的连接字符串的名称不匹配。因此,EF 在我的 PC 上创建了到 localdb 的默认连接,而不是访问 Azure。
猜你喜欢
  • 1970-01-01
  • 2013-01-14
  • 2012-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-05
  • 2012-01-10
  • 2013-11-05
相关资源
最近更新 更多