我创建了非常简单的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;
}
}
}
答案 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