Опубликован: 30.05.2011 | Доступ: свободный | Студентов: 2269 / 157 | Оценка: 4.12 / 4.41 | Длительность: 12:00:00
Самостоятельная работа 4:

Хранилище данных с реляционной структурой

< Лекция 12 || Самостоятельная работа 4: 12 || Самостоятельная работа 5 >

Мы не видим необходимости в создании нового 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".


Рис. 16.2.

Если вы решите ее просмотреть, то увидите, что данные из реляционной БД успешно перенесены в таблицу.

< Лекция 12 || Самостоятельная работа 4: 12 || Самостоятельная работа 5 >
Роза Мальцева
Роза Мальцева
Игнат Гринько
Игнат Гринько

Примерно месяц назад получил на сайте код Дримспарк, сегодня вводил его на сайте Дримспарк, пишет: Недействительный код проверки. Проверьте правильность введенного кода. Код вводил методом: скопировать-вставить.