无法从差异Web角色中的本地数据库获取数据

时间:2014-04-25 06:21:30

标签: sql-server asp.net-mvc azure database-connection azure-web-roles

我创建了非常简单的MVC5项目,其中包含两个Web角色。 webRole1与本地DB一起由代码创建(并通过scaffold生成视图)这很好用,我能够运行它获取视图数据并在本地数据库中创建数据。

现在我在WebRole1中创建了非常简单的API,以便从正在运行的数据库中读取数据,并通过API获取数据

我创建了WebRole2,问题是我无法从webRole2中的这个API(在web role1中)读取数据,我应该怎么做?我提供的密钥为null在DB

如果可行,我可以在一个驱动器中共享该项目。

这是WebRole1的模型

namespace WebRole1.Models
{
    public class User
    {
        [Key]
        [Required]
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        public string UserId { get; set; }

        public string FirstName { get; set; }
    }

    public class ConfigModelDbContext : DbContext
    {
        public ConfigModelDbContext()
            : base("DefaultConnection")
        {
        }

        public DbSet<User> User { get; set; }
    }
}

这是连接字符串

  <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\User.mdf;Initial Catalog=Users;Integrated Security=True" providerName="System.Data.SqlClient" />
  </connectionStrings>

这是从本地数据库读取数据的简单API(如果我从webRole1调用此API,则找到的数据

namespace WebRole1.Models
{
    public class UserApi
    {
        private ConfigModelDbContext db = new ConfigModelDbContext();

        public User getDbData()
        {
            User user = db.User.Find("user1");
            return user;
        }
    }
    }

1 个答案:

答案 0 :(得分:0)

Russriguez回答here

  

将第二个WebRole配置为指向第一个WebRole(MVC项目)中的.mdf,例如

<connectionStrings>
    <add name="Connection1" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=C:\Path\To\The\Database\Person.mdf;Initial Catalog=Persons;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
  

替换&#34; C:\ Path \ To \ The \ Data \ Person.mdf&#34;与实际的完整路径   到WebRole1的App_Data目录中的数据库文件。

唯一的问题是这是一个绝对路径,所以所有开发人员都需要他们的存储库在同一个地方。不理想,但我无法获得相对的工作路径。我试过了:

..\..\..\..\..\..\[project-with-db]\App_Data\[db-name].mdf

假设第二个Web角色的基目录为:

[src-root]\[azure-project]\csx\Debug\roles\[web-role-project-2]\approot