Опубликован: 30.05.2011 | Доступ: свободный | Студентов: 2409 / 235 | Оценка: 4.12 / 4.41 | Длительность: 12:00:00
Специальности: Программист, Архитектор программного обеспечения
Теги:
Самостоятельная работа 4:
Хранилище данных с реляционной структурой
Мы не видим необходимости в создании нового VS - проекта, поэтому просто изменим WorkerRole.cs проекта, созданного в рамках предыдущей практической работы. А именно, метод Run, чей листинг представлен ниже:
CloudStorageAccount.SetConfigurationSettingPublisher( (configName, configSettingPublisher) => { var connectionString = RoleEnvironment.GetConfigurationSettingValue(configName); configSettingPublisher(connectionString); } ); CloudStorageAccount account = CloudStorageAccount.FromConfigurationSetting("DataConnectionString"); //создание таблицы Windows Azure Table CloudTableClient _tc = null; _tc = account.CreateCloudTableClient(); _tc.CreateTableIfNotExist("Relational"); Context context = new Context(account.TableEndpoint, account.Credentials); //определение параметров подключения к БД, измените строку подключения //соответствующим образом, для соединения с вашим sql - сервером SqlConnection conn = new SqlConnection("Data Source=saigon\\sqlexpress; Initial Catalog=azureexample; Integrated Security=true;"); //импорт данных из таблицы Address //указываем команду для чтения данных из базы SqlCommand cmd = new SqlCommand("SELECT * FROM Address", conn); conn.Open(); SqlDataReader adr = cmd.ExecuteReader(); while (adr.Read()) { //в параметрах метода AddObject указывает имя таблицы и определяем новую сущность класс //Address context.AddObject("Relational", new Address { PartitionKey = "Address", RowKey = adr["AddresID"].ToString(), country = adr["Country"].ToString(), city = adr["City"].ToString(), street = adr["Street"].ToString(), house = Convert.ToInt32(adr["House"].ToString()) }); context.SaveChanges(); } adr.Close(); //импорт данных из таблицы Firm cmd.CommandText = "SELECT * FROM Firm"; SqlDataReader frm = cmd.ExecuteReader(); while (frm.Read()) { context.AddObject("Relational", new Firm { PartitionKey = "Firm", RowKey = frm["FirmID"].ToString(), nameof = frm["NameOf"].ToString(), telephone = frm["Telephone"].ToString(), email = frm["Email"].ToString(), adresskey = Convert.ToInt32(frm["AddressKey"].ToString()) }); context.SaveChanges(); } frm.Close(); //импорт данных из таблицы Employee cmd.CommandText = "SELECT * FROM Employee"; SqlDataReader emp = cmd.ExecuteReader(); while (emp.Read()) { context.AddObject("Relational", new Employee { PartitionKey = "Employee", RowKey = emp["EmployeeID"].ToString(), firstname = emp["FirstName"].ToString(), lastname = emp["LastName"].ToString(), telephone = emp["Telephone"].ToString(), firmkey = Convert.ToInt32(emp["FirmKey"].ToString()) }); context.SaveChanges(); } emp.Close(); conn.Close();
Кроме того, нам необходимо создать классы - соответствующие сущностям реляционной базы данных, а также класс - контекст.
Класс Address.cs
class Address: TableServiceEntity { public String country { get; set; } public String city { get; set; } public String street { get; set; } public int house { get; set; } }
Класс Firm.cs
class Firm: TableServiceEntity { public String nameof { get; set; } public String telephone { get; set; } public String email { get; set; } public int adresskey { get; set; } }
Класс Employee.cs
class Employee: TableServiceEntity { public String firstname { get; set; } public String lastname { get; set; } public String telephone { get; set;} public int firmkey { get; set; } }
Класс Context.cs
class Context: TableServiceContext { public IQueryable<Address> ContactData { get { return this.CreateQuery<Address>("Address"); } } public Context(Uri baseAddress, StorageCredentials credentials) : base(baseAddress.AbsoluteUri, credentials) { } }
Запустите приложение и дождитесь конца его выполнения. В обозревателе серверов раскройте вкладку "Хранилище Windows Azure", затем обновите вкладку "Таблицы" и раскройте ее. Как вы можете видеть, появилась таблица "Relational".
Если вы решите ее просмотреть, то увидите, что данные из реляционной БД успешно перенесены в таблицу.