我对Windows Azure比较陌生。到目前为止,我的C#WPF项目(Visual Studio 2012)一直在访问本地数据库。最近设置了一个Windows Azure帐户,我想将本地数据库迁移到Azure。
我在Azure上创建了一个SQL数据库。
我正在努力添加C#代码,以便将数据从本地应用程序传递到云端。为了测试这个功能,我添加了一个我想插入Azure DB的随机用户。
这是我到目前为止所做的:
在App.config中:
<connectionStrings>
<add name="STAREntites"
connectionString="Server=tcp:xxxxx.database.windows.net;
Database=xxxxx;
Uid=xxxxx.database.windows.net;
Pwd=xxxxx;
Encrypt=Yes;" />
</connectionStrings>
我有一个包含PersonRepository.cs
的'Model'文件夹:
public class PersonEntity : TableEntity
{
public PersonEntity()
{
}
public PersonEntity(int id, string name, double sal)
{
Id = id;
Name = name;
Salary = sal;
PartitionKey = id.ToString();
RowKey = name;
}
public int Id { get; set; }
public string Name { get; set; }
public double Salary { get; set; }
}
}
在我的注册页面中,我还有以下代码将数据发送到Azure DB:
private void RegisterUser()
{
string connStr = ConfigurationManager.ConnectionStrings["STAREntites"].ConnectionString;
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connStr);
CloudTableClient client = storageAccount.CreateCloudTableClient();
CloudTable table = client.GetTableReference("PersonTable");
table.CreateIfNotExists();
var emp = new PersonTable
{
FirstName = "Cor",
LastName = "Mky",
EmailAddress = "cm@email.com",
Password = "password",
};
TableOperation insertOp = TableOperation.Insert(emp);
table.Execute(insertOp);
}
目前我可以通过Server Explorer看到从RegisterUser
方法添加的测试用户被插入到Windows Azure存储中的person表中。但是,当我检查Azure SQL DB时,实体不存在。
任何人都可以帮助解释实体未被发送到Azure的原因吗?
我已经检查过我的端口正在侦听并且SQL服务器正在运行。我在Visual Studio中没有错误。
答案 0 :(得分:2)
您似乎对存储类型感到困惑。 CloudStorageAccount
用于Azure存储:表,Blob和队列,而不是Windows Azure SQL数据库。
我不太确定CloudStorageAccount.Parse
如果你将它传递给看起来像SQL Server连接字符串的那样,就不会抛出错误。
如果要将Entity Framework与Windows Azure SQL数据库一起使用,只需使用常规DbContext
代码并将WOD提供ADO.NET连接字符串,这看起来就像你所拥有的那样,除了Uid应该是Uid=uuuuu@xxxxx
。
如果您想使用表存储,那么您应该查看表存储以使用Zudio之类的内容查看插入的实体。