рдХреНрд▓рд╛рдЙрдб рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдЬрдореАрди рд╣рд╛рд╕рд┐рд▓ рдХрд░ рд░рд╣реА рд╣реИред рдмрдврд╝рддреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд▓реЛрдЧ рдЗрд╕ рддрдереНрдп рд╕реЗ рдЕрд╡рдЧрдд рд╣реИрдВ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдкрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ "рдХреНрд▓рд╛рдЙрдб" рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрджрдо рдЙрдард╛ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рд╣реБрдЖ, рдЧреНрд░рд╛рд╣рдХ рдиреЗ рдХрд╣рд╛ рдХрд┐ рд╡рд╣ "рдмрд╛рджрд▓реЛрдВ рдореЗрдВ рдЪрдврд╝рдирд╛" рдЪрд╛рд╣рддрд╛ рдерд╛ред рдХреНрдпреЛрдВрдХрд┐ рдЪреВрдВрдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ рдкрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдХреНрд▓рд╛рдЙрдб рдХреЛ рдЪреБрдирдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд╕рдВрджреЗрд╣ рдирд╣реАрдВ рдерд╛, рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЕрдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмреАрдЪ, "рдХреНрд▓рд╛рдЙрдб" рдореЗрдВ рдЬрд╛рдиреЗ рдкрд░, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рд╕рдВрд░рдЪрд┐рдд рднрдВрдбрд╛рд░рдг рдХреА рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реБрдИред Windows Azure Windows Azure рд╕рдВрдЧреНрд░рд╣рдг рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрдИ рд╕рдВрдЧреНрд░рд╣рдг рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:
- рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдмреНрд▓реЙрдм - рдмрдбрд╝реЗ рдбреЗрдЯрд╛ рдЖрдЗрдЯрдо рдХреЗ рд▓рд┐рдП рднрдВрдбрд╛рд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
- рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдЯреЗрдмрд▓ - рд╕реЗрд╡рд╛ рд░рд╛рдЬреНрдпреЛрдВ рдХрд╛ рдПрдХ рд╕рдВрд░рдЪрд┐рдд рднрдВрдбрд╛рд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
- Windows Azure Que - рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рдХреЗ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдиреМрдХрд░рд┐рдпреЛрдВ рдХрд╛ рд╕рдордп-рдирд┐рд░реНрдзрд╛рд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдХрддрд╛рд░ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдмреНрд▓реЙрдм рдФрд░ рдЯреЗрдмрд▓ рдХреЗ рдмреАрдЪ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред рд╣рдо рдЖрдЧреЗ рд╕рдордЭрддреЗ рд╣реИрдВред
рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдЯреЗрдмрд▓ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рд╣реИред рд╣рдо рдЖрджрд┐рдо рдкреНрд░рд╢реНрдиреЛрдВ рдкрд░ рдЕрдорд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рдЙрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реА рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рд╣рдо рдЧрд╛рдЗрдб рд░рд┐рдХреЙрд░реНрдб рдХреЗ рдЧреБрдгреЛрдВ рдореЗрдВ рдПрдХ рдФрд░ рд░рд┐рдХреЙрд░реНрдб рд░рдЦрдХрд░ рд╡рд╕реНрддреБрдУрдВ рдХреА рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЕрдкрдиреЗ рдЬреНрдЮрд╛рди рдХреЛ рдЧрд╣рд░рд╛ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд░рд┐рдХреЙрд░реНрдб рдореЗрдВ 255 рд╕реЗ рдЕрдзрд┐рдХ рдлрд╝реАрд▓реНрдб рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рдЬреЛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ), 1 mb рд╕реЗ рдмрдбрд╝рд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ (рдЬреЛ рдЗрд╕ рд╕рдордп рд╣рдореЗрдВ рд╕реВрдЯ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рдХрд╛рд╕ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдмрдЧрд╝рд▓ рдореЗрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ) рдФрд░, рдЕрдВрдд рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЖрдХрд╛рд░ 64 kB рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕реЗ рдЕрдм рдФрд░ рдирд╣реАрдВ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдХрд╛рд░ рдореЗрдВ 300 kB рддрдХ рдкрд╛рда рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдФрд░ рдмреВрдБрдж рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдмреВрдБрдж-рдПрд╕ рдЖрдкрдХреЛ 200 рдЬреАрдмреА рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЬреАрдм рд╕реАрдорд╛ рдХреЗ рд╕рд╛рде рд░рд┐рдХреЙрд░реНрдб рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рдХрдВрдЯреЗрдирд░реЛрдВ рдореЗрдВ рд░рдЦрдХрд░ рдФрд░ рдЖрднрд╛рд╕реА рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрд░рдЪрдирд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдмреВрдБрдж рдХреЛ рдореЗрдЯрд╛рдбрд╛рдЯрд╛ рдХреЗ рд╕рд╛рде 8B рдХреЗ рдХреБрд▓ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдмреВрдБрдж? рдлрд┐рд░ рдирд╛! рд╣рдо рдмреНрд▓рдмреНрд╕ рдХрд╛ рдЪрдпрди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдХрд┐рд╕реА рднреА рдЕрдиреБрд░реЛрдз рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рднреА (рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рдпрд╣ рдирд╣реАрдВ рдорд┐рд▓рд╛) рддрдВрддреНрд░ рд╣реИред рдЖрдк рдкреВрдЫрддреЗ рд╣реИрдВ: тАЬрдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдЖрдЦрд┐рд░рдХрд╛рд░, рдЖрдк рд╡рд╣рд╛рдВ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ! тАЭрдФрд░ рдЖрдк рд▓рдЧрднрдЧ рд╕рд╣реА рд╣реЛрдВрдЧреЗ, рдЖрдк рдмреВрдБрдж рд╕рд╛рдордЧреНрд░реА рдХреЗ рдмрд┐рдирд╛ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ LINQ рдХреНрд╡реЗрд░реА рднреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╕рднреА Blobs рдХреЗ рд╕рднреА рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЖрдкрдХреЛ рдпрд╣ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдФрд░ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдпрд╣ рдПрдХ рдорд╣рдВрдЧрд╛ рдСрдкрд░реЗрд╢рди рд╣реЛрдЧрд╛ред
рддреЛ, рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд╣рдорд╛рд░реА рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ? рдмреЗрд╢рдХ рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ! рдФрд░ рд╣рдореЗрдВ рдПрдХ рд░рд╛рд╕реНрддрд╛ рдорд┐рд▓ рдЧрдпрд╛, рд╢рд╛рдпрдж рдпрд╣ рд╕рд╣реА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрддреБрд╖реНрдЯ рд╣реИрдВред рдпрд╣ рдмреНрд▓реЙрдм рдореЗрдВ рд╣реА рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реАред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдиреБрдХрд╕рд╛рди рдХреА рднрд░рдкрд╛рдИ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдЗрди рджреЛ рддрдХрдиреАрдХреЛрдВ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рддреЗ рд╣реИрдВред
рдФрд░ рдЕрдВрдд рдореЗрдВ, рдереЛрдбрд╝рд╛ рд╕рд╛ рдХреЛрдб рдЬреЛ рдКрдкрд░ рд▓рд┐рдЦреЗ рдЧрдП рд╕рдм рдХреБрдЫ рджрд┐рдЦрд╛рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдПрдХ рд░реИрдкрд░ рдХреНрд▓рд╛рд╕ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рдЯреЗрдмрд▓ рд╕реНрдЯреЛрд░реЗрдЬ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред
public class DynamicTableServiceContext<T> : TableServiceContext where T : TableServiceEntity { private CloudStorageAccount storageAccount; private string tableName; public DynamicTableServiceContext(CloudStorageAccount storageAccount, string tableName) : base (storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials) { this .storageAccount = storageAccount; this .tableName = tableName; var tableStorage = new CloudTableClient(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials); tableStorage.CreateTableIfNotExist(tableName); } public void Add(T entityToAdd) { AddObject(tableName, entityToAdd); SaveChanges(); } public void Update(T entityToUpdate) { UpdateObject(entityToUpdate); SaveChanges(); } public void Delete(T entityToDelete) { DeleteObject(entityToDelete); SaveChanges(); } public IQueryable<T> Load() { return CreateQuery<T>(tableName); } } * This source code was highlighted with Source Code Highlighter .
public class DynamicTableServiceContext<T> : TableServiceContext where T : TableServiceEntity { private CloudStorageAccount storageAccount; private string tableName; public DynamicTableServiceContext(CloudStorageAccount storageAccount, string tableName) : base (storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials) { this .storageAccount = storageAccount; this .tableName = tableName; var tableStorage = new CloudTableClient(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials); tableStorage.CreateTableIfNotExist(tableName); } public void Add(T entityToAdd) { AddObject(tableName, entityToAdd); SaveChanges(); } public void Update(T entityToUpdate) { UpdateObject(entityToUpdate); SaveChanges(); } public void Delete(T entityToDelete) { DeleteObject(entityToDelete); SaveChanges(); } public IQueryable<T> Load() { return CreateQuery<T>(tableName); } } * This source code was highlighted with Source Code Highlighter .
public class DynamicTableServiceContext<T> : TableServiceContext where T : TableServiceEntity { private CloudStorageAccount storageAccount; private string tableName; public DynamicTableServiceContext(CloudStorageAccount storageAccount, string tableName) : base (storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials) { this .storageAccount = storageAccount; this .tableName = tableName; var tableStorage = new CloudTableClient(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials); tableStorage.CreateTableIfNotExist(tableName); } public void Add(T entityToAdd) { AddObject(tableName, entityToAdd); SaveChanges(); } public void Update(T entityToUpdate) { UpdateObject(entityToUpdate); SaveChanges(); } public void Delete(T entityToDelete) { DeleteObject(entityToDelete); SaveChanges(); } public IQueryable<T> Load() { return CreateQuery<T>(tableName); } } * This source code was highlighted with Source Code Highlighter .
public class DynamicTableServiceContext<T> : TableServiceContext where T : TableServiceEntity { private CloudStorageAccount storageAccount; private string tableName; public DynamicTableServiceContext(CloudStorageAccount storageAccount, string tableName) : base (storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials) { this .storageAccount = storageAccount; this .tableName = tableName; var tableStorage = new CloudTableClient(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials); tableStorage.CreateTableIfNotExist(tableName); } public void Add(T entityToAdd) { AddObject(tableName, entityToAdd); SaveChanges(); } public void Update(T entityToUpdate) { UpdateObject(entityToUpdate); SaveChanges(); } public void Delete(T entityToDelete) { DeleteObject(entityToDelete); SaveChanges(); } public IQueryable<T> Load() { return CreateQuery<T>(tableName); } } * This source code was highlighted with Source Code Highlighter .
public class DynamicTableServiceContext<T> : TableServiceContext where T : TableServiceEntity { private CloudStorageAccount storageAccount; private string tableName; public DynamicTableServiceContext(CloudStorageAccount storageAccount, string tableName) : base (storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials) { this .storageAccount = storageAccount; this .tableName = tableName; var tableStorage = new CloudTableClient(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials); tableStorage.CreateTableIfNotExist(tableName); } public void Add(T entityToAdd) { AddObject(tableName, entityToAdd); SaveChanges(); } public void Update(T entityToUpdate) { UpdateObject(entityToUpdate); SaveChanges(); } public void Delete(T entityToDelete) { DeleteObject(entityToDelete); SaveChanges(); } public IQueryable<T> Load() { return CreateQuery<T>(tableName); } } * This source code was highlighted with Source Code Highlighter .
public class DynamicTableServiceContext<T> : TableServiceContext where T : TableServiceEntity { private CloudStorageAccount storageAccount; private string tableName; public DynamicTableServiceContext(CloudStorageAccount storageAccount, string tableName) : base (storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials) { this .storageAccount = storageAccount; this .tableName = tableName; var tableStorage = new CloudTableClient(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials); tableStorage.CreateTableIfNotExist(tableName); } public void Add(T entityToAdd) { AddObject(tableName, entityToAdd); SaveChanges(); } public void Update(T entityToUpdate) { UpdateObject(entityToUpdate); SaveChanges(); } public void Delete(T entityToDelete) { DeleteObject(entityToDelete); SaveChanges(); } public IQueryable<T> Load() { return CreateQuery<T>(tableName); } } * This source code was highlighted with Source Code Highlighter .
public class DynamicTableServiceContext<T> : TableServiceContext where T : TableServiceEntity { private CloudStorageAccount storageAccount; private string tableName; public DynamicTableServiceContext(CloudStorageAccount storageAccount, string tableName) : base (storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials) { this .storageAccount = storageAccount; this .tableName = tableName; var tableStorage = new CloudTableClient(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials); tableStorage.CreateTableIfNotExist(tableName); } public void Add(T entityToAdd) { AddObject(tableName, entityToAdd); SaveChanges(); } public void Update(T entityToUpdate) { UpdateObject(entityToUpdate); SaveChanges(); } public void Delete(T entityToDelete) { DeleteObject(entityToDelete); SaveChanges(); } public IQueryable<T> Load() { return CreateQuery<T>(tableName); } } * This source code was highlighted with Source Code Highlighter .
public class DynamicTableServiceContext<T> : TableServiceContext where T : TableServiceEntity { private CloudStorageAccount storageAccount; private string tableName; public DynamicTableServiceContext(CloudStorageAccount storageAccount, string tableName) : base (storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials) { this .storageAccount = storageAccount; this .tableName = tableName; var tableStorage = new CloudTableClient(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials); tableStorage.CreateTableIfNotExist(tableName); } public void Add(T entityToAdd) { AddObject(tableName, entityToAdd); SaveChanges(); } public void Update(T entityToUpdate) { UpdateObject(entityToUpdate); SaveChanges(); } public void Delete(T entityToDelete) { DeleteObject(entityToDelete); SaveChanges(); } public IQueryable<T> Load() { return CreateQuery<T>(tableName); } } * This source code was highlighted with Source Code Highlighter .
public class DynamicTableServiceContext<T> : TableServiceContext where T : TableServiceEntity { private CloudStorageAccount storageAccount; private string tableName; public DynamicTableServiceContext(CloudStorageAccount storageAccount, string tableName) : base (storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials) { this .storageAccount = storageAccount; this .tableName = tableName; var tableStorage = new CloudTableClient(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials); tableStorage.CreateTableIfNotExist(tableName); } public void Add(T entityToAdd) { AddObject(tableName, entityToAdd); SaveChanges(); } public void Update(T entityToUpdate) { UpdateObject(entityToUpdate); SaveChanges(); } public void Delete(T entityToDelete) { DeleteObject(entityToDelete); SaveChanges(); } public IQueryable<T> Load() { return CreateQuery<T>(tableName); } } * This source code was highlighted with Source Code Highlighter .
public class DynamicTableServiceContext<T> : TableServiceContext where T : TableServiceEntity { private CloudStorageAccount storageAccount; private string tableName; public DynamicTableServiceContext(CloudStorageAccount storageAccount, string tableName) : base (storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials) { this .storageAccount = storageAccount; this .tableName = tableName; var tableStorage = new CloudTableClient(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials); tableStorage.CreateTableIfNotExist(tableName); } public void Add(T entityToAdd) { AddObject(tableName, entityToAdd); SaveChanges(); } public void Update(T entityToUpdate) { UpdateObject(entityToUpdate); SaveChanges(); } public void Delete(T entityToDelete) { DeleteObject(entityToDelete); SaveChanges(); } public IQueryable<T> Load() { return CreateQuery<T>(tableName); } } * This source code was highlighted with Source Code Highlighter .
public class DynamicTableServiceContext<T> : TableServiceContext where T : TableServiceEntity { private CloudStorageAccount storageAccount; private string tableName; public DynamicTableServiceContext(CloudStorageAccount storageAccount, string tableName) : base (storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials) { this .storageAccount = storageAccount; this .tableName = tableName; var tableStorage = new CloudTableClient(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials); tableStorage.CreateTableIfNotExist(tableName); } public void Add(T entityToAdd) { AddObject(tableName, entityToAdd); SaveChanges(); } public void Update(T entityToUpdate) { UpdateObject(entityToUpdate); SaveChanges(); } public void Delete(T entityToDelete) { DeleteObject(entityToDelete); SaveChanges(); } public IQueryable<T> Load() { return CreateQuery<T>(tableName); } } * This source code was highlighted with Source Code Highlighter .
public class DynamicTableServiceContext<T> : TableServiceContext where T : TableServiceEntity { private CloudStorageAccount storageAccount; private string tableName; public DynamicTableServiceContext(CloudStorageAccount storageAccount, string tableName) : base (storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials) { this .storageAccount = storageAccount; this .tableName = tableName; var tableStorage = new CloudTableClient(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials); tableStorage.CreateTableIfNotExist(tableName); } public void Add(T entityToAdd) { AddObject(tableName, entityToAdd); SaveChanges(); } public void Update(T entityToUpdate) { UpdateObject(entityToUpdate); SaveChanges(); } public void Delete(T entityToDelete) { DeleteObject(entityToDelete); SaveChanges(); } public IQueryable<T> Load() { return CreateQuery<T>(tableName); } } * This source code was highlighted with Source Code Highlighter .
public class DynamicTableServiceContext<T> : TableServiceContext where T : TableServiceEntity { private CloudStorageAccount storageAccount; private string tableName; public DynamicTableServiceContext(CloudStorageAccount storageAccount, string tableName) : base (storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials) { this .storageAccount = storageAccount; this .tableName = tableName; var tableStorage = new CloudTableClient(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials); tableStorage.CreateTableIfNotExist(tableName); } public void Add(T entityToAdd) { AddObject(tableName, entityToAdd); SaveChanges(); } public void Update(T entityToUpdate) { UpdateObject(entityToUpdate); SaveChanges(); } public void Delete(T entityToDelete) { DeleteObject(entityToDelete); SaveChanges(); } public IQueryable<T> Load() { return CreateQuery<T>(tableName); } } * This source code was highlighted with Source Code Highlighter .
public class DynamicTableServiceContext<T> : TableServiceContext where T : TableServiceEntity { private CloudStorageAccount storageAccount; private string tableName; public DynamicTableServiceContext(CloudStorageAccount storageAccount, string tableName) : base (storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials) { this .storageAccount = storageAccount; this .tableName = tableName; var tableStorage = new CloudTableClient(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials); tableStorage.CreateTableIfNotExist(tableName); } public void Add(T entityToAdd) { AddObject(tableName, entityToAdd); SaveChanges(); } public void Update(T entityToUpdate) { UpdateObject(entityToUpdate); SaveChanges(); } public void Delete(T entityToDelete) { DeleteObject(entityToDelete); SaveChanges(); } public IQueryable<T> Load() { return CreateQuery<T>(tableName); } } * This source code was highlighted with Source Code Highlighter .
public class DynamicTableServiceContext<T> : TableServiceContext where T : TableServiceEntity { private CloudStorageAccount storageAccount; private string tableName; public DynamicTableServiceContext(CloudStorageAccount storageAccount, string tableName) : base (storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials) { this .storageAccount = storageAccount; this .tableName = tableName; var tableStorage = new CloudTableClient(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials); tableStorage.CreateTableIfNotExist(tableName); } public void Add(T entityToAdd) { AddObject(tableName, entityToAdd); SaveChanges(); } public void Update(T entityToUpdate) { UpdateObject(entityToUpdate); SaveChanges(); } public void Delete(T entityToDelete) { DeleteObject(entityToDelete); SaveChanges(); } public IQueryable<T> Load() { return CreateQuery<T>(tableName); } } * This source code was highlighted with Source Code Highlighter .
public class DynamicTableServiceContext<T> : TableServiceContext where T : TableServiceEntity { private CloudStorageAccount storageAccount; private string tableName; public DynamicTableServiceContext(CloudStorageAccount storageAccount, string tableName) : base (storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials) { this .storageAccount = storageAccount; this .tableName = tableName; var tableStorage = new CloudTableClient(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials); tableStorage.CreateTableIfNotExist(tableName); } public void Add(T entityToAdd) { AddObject(tableName, entityToAdd); SaveChanges(); } public void Update(T entityToUpdate) { UpdateObject(entityToUpdate); SaveChanges(); } public void Delete(T entityToDelete) { DeleteObject(entityToDelete); SaveChanges(); } public IQueryable<T> Load() { return CreateQuery<T>(tableName); } } * This source code was highlighted with Source Code Highlighter .
public class DynamicTableServiceContext<T> : TableServiceContext where T : TableServiceEntity { private CloudStorageAccount storageAccount; private string tableName; public DynamicTableServiceContext(CloudStorageAccount storageAccount, string tableName) : base (storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials) { this .storageAccount = storageAccount; this .tableName = tableName; var tableStorage = new CloudTableClient(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials); tableStorage.CreateTableIfNotExist(tableName); } public void Add(T entityToAdd) { AddObject(tableName, entityToAdd); SaveChanges(); } public void Update(T entityToUpdate) { UpdateObject(entityToUpdate); SaveChanges(); } public void Delete(T entityToDelete) { DeleteObject(entityToDelete); SaveChanges(); } public IQueryable<T> Load() { return CreateQuery<T>(tableName); } } * This source code was highlighted with Source Code Highlighter .
public class DynamicTableServiceContext<T> : TableServiceContext where T : TableServiceEntity { private CloudStorageAccount storageAccount; private string tableName; public DynamicTableServiceContext(CloudStorageAccount storageAccount, string tableName) : base (storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials) { this .storageAccount = storageAccount; this .tableName = tableName; var tableStorage = new CloudTableClient(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials); tableStorage.CreateTableIfNotExist(tableName); } public void Add(T entityToAdd) { AddObject(tableName, entityToAdd); SaveChanges(); } public void Update(T entityToUpdate) { UpdateObject(entityToUpdate); SaveChanges(); } public void Delete(T entityToDelete) { DeleteObject(entityToDelete); SaveChanges(); } public IQueryable<T> Load() { return CreateQuery<T>(tableName); } } * This source code was highlighted with Source Code Highlighter .
public class DynamicTableServiceContext<T> : TableServiceContext where T : TableServiceEntity { private CloudStorageAccount storageAccount; private string tableName; public DynamicTableServiceContext(CloudStorageAccount storageAccount, string tableName) : base (storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials) { this .storageAccount = storageAccount; this .tableName = tableName; var tableStorage = new CloudTableClient(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials); tableStorage.CreateTableIfNotExist(tableName); } public void Add(T entityToAdd) { AddObject(tableName, entityToAdd); SaveChanges(); } public void Update(T entityToUpdate) { UpdateObject(entityToUpdate); SaveChanges(); } public void Delete(T entityToDelete) { DeleteObject(entityToDelete); SaveChanges(); } public IQueryable<T> Load() { return CreateQuery<T>(tableName); } } * This source code was highlighted with Source Code Highlighter .
public class DynamicTableServiceContext<T> : TableServiceContext where T : TableServiceEntity { private CloudStorageAccount storageAccount; private string tableName; public DynamicTableServiceContext(CloudStorageAccount storageAccount, string tableName) : base (storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials) { this .storageAccount = storageAccount; this .tableName = tableName; var tableStorage = new CloudTableClient(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials); tableStorage.CreateTableIfNotExist(tableName); } public void Add(T entityToAdd) { AddObject(tableName, entityToAdd); SaveChanges(); } public void Update(T entityToUpdate) { UpdateObject(entityToUpdate); SaveChanges(); } public void Delete(T entityToDelete) { DeleteObject(entityToDelete); SaveChanges(); } public IQueryable<T> Load() { return CreateQuery<T>(tableName); } } * This source code was highlighted with Source Code Highlighter .
public class DynamicTableServiceContext<T> : TableServiceContext where T : TableServiceEntity { private CloudStorageAccount storageAccount; private string tableName; public DynamicTableServiceContext(CloudStorageAccount storageAccount, string tableName) : base (storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials) { this .storageAccount = storageAccount; this .tableName = tableName; var tableStorage = new CloudTableClient(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials); tableStorage.CreateTableIfNotExist(tableName); } public void Add(T entityToAdd) { AddObject(tableName, entityToAdd); SaveChanges(); } public void Update(T entityToUpdate) { UpdateObject(entityToUpdate); SaveChanges(); } public void Delete(T entityToDelete) { DeleteObject(entityToDelete); SaveChanges(); } public IQueryable<T> Load() { return CreateQuery<T>(tableName); } } * This source code was highlighted with Source Code Highlighter .
public class DynamicTableServiceContext<T> : TableServiceContext where T : TableServiceEntity { private CloudStorageAccount storageAccount; private string tableName; public DynamicTableServiceContext(CloudStorageAccount storageAccount, string tableName) : base (storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials) { this .storageAccount = storageAccount; this .tableName = tableName; var tableStorage = new CloudTableClient(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials); tableStorage.CreateTableIfNotExist(tableName); } public void Add(T entityToAdd) { AddObject(tableName, entityToAdd); SaveChanges(); } public void Update(T entityToUpdate) { UpdateObject(entityToUpdate); SaveChanges(); } public void Delete(T entityToDelete) { DeleteObject(entityToDelete); SaveChanges(); } public IQueryable<T> Load() { return CreateQuery<T>(tableName); } } * This source code was highlighted with Source Code Highlighter .
public class DynamicTableServiceContext<T> : TableServiceContext where T : TableServiceEntity { private CloudStorageAccount storageAccount; private string tableName; public DynamicTableServiceContext(CloudStorageAccount storageAccount, string tableName) : base (storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials) { this .storageAccount = storageAccount; this .tableName = tableName; var tableStorage = new CloudTableClient(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials); tableStorage.CreateTableIfNotExist(tableName); } public void Add(T entityToAdd) { AddObject(tableName, entityToAdd); SaveChanges(); } public void Update(T entityToUpdate) { UpdateObject(entityToUpdate); SaveChanges(); } public void Delete(T entityToDelete) { DeleteObject(entityToDelete); SaveChanges(); } public IQueryable<T> Load() { return CreateQuery<T>(tableName); } } * This source code was highlighted with Source Code Highlighter .
public class DynamicTableServiceContext<T> : TableServiceContext where T : TableServiceEntity { private CloudStorageAccount storageAccount; private string tableName; public DynamicTableServiceContext(CloudStorageAccount storageAccount, string tableName) : base (storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials) { this .storageAccount = storageAccount; this .tableName = tableName; var tableStorage = new CloudTableClient(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials); tableStorage.CreateTableIfNotExist(tableName); } public void Add(T entityToAdd) { AddObject(tableName, entityToAdd); SaveChanges(); } public void Update(T entityToUpdate) { UpdateObject(entityToUpdate); SaveChanges(); } public void Delete(T entityToDelete) { DeleteObject(entityToDelete); SaveChanges(); } public IQueryable<T> Load() { return CreateQuery<T>(tableName); } } * This source code was highlighted with Source Code Highlighter .
public class DynamicTableServiceContext<T> : TableServiceContext where T : TableServiceEntity { private CloudStorageAccount storageAccount; private string tableName; public DynamicTableServiceContext(CloudStorageAccount storageAccount, string tableName) : base (storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials) { this .storageAccount = storageAccount; this .tableName = tableName; var tableStorage = new CloudTableClient(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials); tableStorage.CreateTableIfNotExist(tableName); } public void Add(T entityToAdd) { AddObject(tableName, entityToAdd); SaveChanges(); } public void Update(T entityToUpdate) { UpdateObject(entityToUpdate); SaveChanges(); } public void Delete(T entityToDelete) { DeleteObject(entityToDelete); SaveChanges(); } public IQueryable<T> Load() { return CreateQuery<T>(tableName); } } * This source code was highlighted with Source Code Highlighter .
public class DynamicTableServiceContext<T> : TableServiceContext where T : TableServiceEntity { private CloudStorageAccount storageAccount; private string tableName; public DynamicTableServiceContext(CloudStorageAccount storageAccount, string tableName) : base (storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials) { this .storageAccount = storageAccount; this .tableName = tableName; var tableStorage = new CloudTableClient(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials); tableStorage.CreateTableIfNotExist(tableName); } public void Add(T entityToAdd) { AddObject(tableName, entityToAdd); SaveChanges(); } public void Update(T entityToUpdate) { UpdateObject(entityToUpdate); SaveChanges(); } public void Delete(T entityToDelete) { DeleteObject(entityToDelete); SaveChanges(); } public IQueryable<T> Load() { return CreateQuery<T>(tableName); } } * This source code was highlighted with Source Code Highlighter .
public class DynamicTableServiceContext<T> : TableServiceContext where T : TableServiceEntity { private CloudStorageAccount storageAccount; private string tableName; public DynamicTableServiceContext(CloudStorageAccount storageAccount, string tableName) : base (storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials) { this .storageAccount = storageAccount; this .tableName = tableName; var tableStorage = new CloudTableClient(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials); tableStorage.CreateTableIfNotExist(tableName); } public void Add(T entityToAdd) { AddObject(tableName, entityToAdd); SaveChanges(); } public void Update(T entityToUpdate) { UpdateObject(entityToUpdate); SaveChanges(); } public void Delete(T entityToDelete) { DeleteObject(entityToDelete); SaveChanges(); } public IQueryable<T> Load() { return CreateQuery<T>(tableName); } } * This source code was highlighted with Source Code Highlighter .
public class DynamicTableServiceContext<T> : TableServiceContext where T : TableServiceEntity { private CloudStorageAccount storageAccount; private string tableName; public DynamicTableServiceContext(CloudStorageAccount storageAccount, string tableName) : base (storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials) { this .storageAccount = storageAccount; this .tableName = tableName; var tableStorage = new CloudTableClient(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials); tableStorage.CreateTableIfNotExist(tableName); } public void Add(T entityToAdd) { AddObject(tableName, entityToAdd); SaveChanges(); } public void Update(T entityToUpdate) { UpdateObject(entityToUpdate); SaveChanges(); } public void Delete(T entityToDelete) { DeleteObject(entityToDelete); SaveChanges(); } public IQueryable<T> Load() { return CreateQuery<T>(tableName); } } * This source code was highlighted with Source Code Highlighter .
public class DynamicTableServiceContext<T> : TableServiceContext where T : TableServiceEntity { private CloudStorageAccount storageAccount; private string tableName; public DynamicTableServiceContext(CloudStorageAccount storageAccount, string tableName) : base (storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials) { this .storageAccount = storageAccount; this .tableName = tableName; var tableStorage = new CloudTableClient(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials); tableStorage.CreateTableIfNotExist(tableName); } public void Add(T entityToAdd) { AddObject(tableName, entityToAdd); SaveChanges(); } public void Update(T entityToUpdate) { UpdateObject(entityToUpdate); SaveChanges(); } public void Delete(T entityToDelete) { DeleteObject(entityToDelete); SaveChanges(); } public IQueryable<T> Load() { return CreateQuery<T>(tableName); } } * This source code was highlighted with Source Code Highlighter .
public class DynamicTableServiceContext<T> : TableServiceContext where T : TableServiceEntity { private CloudStorageAccount storageAccount; private string tableName; public DynamicTableServiceContext(CloudStorageAccount storageAccount, string tableName) : base (storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials) { this .storageAccount = storageAccount; this .tableName = tableName; var tableStorage = new CloudTableClient(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials); tableStorage.CreateTableIfNotExist(tableName); } public void Add(T entityToAdd) { AddObject(tableName, entityToAdd); SaveChanges(); } public void Update(T entityToUpdate) { UpdateObject(entityToUpdate); SaveChanges(); } public void Delete(T entityToDelete) { DeleteObject(entityToDelete); SaveChanges(); } public IQueryable<T> Load() { return CreateQuery<T>(tableName); } } * This source code was highlighted with Source Code Highlighter .
public class DynamicTableServiceContext<T> : TableServiceContext where T : TableServiceEntity { private CloudStorageAccount storageAccount; private string tableName; public DynamicTableServiceContext(CloudStorageAccount storageAccount, string tableName) : base (storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials) { this .storageAccount = storageAccount; this .tableName = tableName; var tableStorage = new CloudTableClient(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials); tableStorage.CreateTableIfNotExist(tableName); } public void Add(T entityToAdd) { AddObject(tableName, entityToAdd); SaveChanges(); } public void Update(T entityToUpdate) { UpdateObject(entityToUpdate); SaveChanges(); } public void Delete(T entityToDelete) { DeleteObject(entityToDelete); SaveChanges(); } public IQueryable<T> Load() { return CreateQuery<T>(tableName); } } * This source code was highlighted with Source Code Highlighter .
public class DynamicTableServiceContext<T> : TableServiceContext where T : TableServiceEntity { private CloudStorageAccount storageAccount; private string tableName; public DynamicTableServiceContext(CloudStorageAccount storageAccount, string tableName) : base (storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials) { this .storageAccount = storageAccount; this .tableName = tableName; var tableStorage = new CloudTableClient(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials); tableStorage.CreateTableIfNotExist(tableName); } public void Add(T entityToAdd) { AddObject(tableName, entityToAdd); SaveChanges(); } public void Update(T entityToUpdate) { UpdateObject(entityToUpdate); SaveChanges(); } public void Delete(T entityToDelete) { DeleteObject(entityToDelete); SaveChanges(); } public IQueryable<T> Load() { return CreateQuery<T>(tableName); } } * This source code was highlighted with Source Code Highlighter .
public class DynamicTableServiceContext<T> : TableServiceContext where T : TableServiceEntity { private CloudStorageAccount storageAccount; private string tableName; public DynamicTableServiceContext(CloudStorageAccount storageAccount, string tableName) : base (storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials) { this .storageAccount = storageAccount; this .tableName = tableName; var tableStorage = new CloudTableClient(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials); tableStorage.CreateTableIfNotExist(tableName); } public void Add(T entityToAdd) { AddObject(tableName, entityToAdd); SaveChanges(); } public void Update(T entityToUpdate) { UpdateObject(entityToUpdate); SaveChanges(); } public void Delete(T entityToDelete) { DeleteObject(entityToDelete); SaveChanges(); } public IQueryable<T> Load() { return CreateQuery<T>(tableName); } } * This source code was highlighted with Source Code Highlighter .
public class DynamicTableServiceContext<T> : TableServiceContext where T : TableServiceEntity { private CloudStorageAccount storageAccount; private string tableName; public DynamicTableServiceContext(CloudStorageAccount storageAccount, string tableName) : base (storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials) { this .storageAccount = storageAccount; this .tableName = tableName; var tableStorage = new CloudTableClient(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials); tableStorage.CreateTableIfNotExist(tableName); } public void Add(T entityToAdd) { AddObject(tableName, entityToAdd); SaveChanges(); } public void Update(T entityToUpdate) { UpdateObject(entityToUpdate); SaveChanges(); } public void Delete(T entityToDelete) { DeleteObject(entityToDelete); SaveChanges(); } public IQueryable<T> Load() { return CreateQuery<T>(tableName); } } * This source code was highlighted with Source Code Highlighter .
рдЕрдЧрд▓рд╛, рд╣рдо рдЗрдХрд╛рдИ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рдмрдирд╛рддреЗ рд╣реИрдВ:
- рдкрдмреНрд▓рд┐рдХ рдПрдирдо рдПрд▓рд┐рдореЗрдВрдЯ рдЯрд╛рдЗрдк
- {
- рдУрдмреНрдЬ = 1,
- рдУрдмреНрдЬреЗрдХреНрдЯрд┐рдЧрд░реА = реи
- }
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд░реНрдЧ BaseObjTableEntity: TableServiceEntity
- {
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд░реНрдЪреБрдЕрд▓ int рдкреНрд░рдХрд╛рд░ { рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ ; рд╕реЗрдЯ ; }
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд╛рдо { рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ ; рд╕реЗрдЯ ; }
- }
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд░реНрдЧ ObjTableEntity: BaseObjTableEntity
- {
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡рд┐рд╡рд░рдг { рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ ; рд╕реЗрдЯ ; }
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреИрдЯрд┐рдЧрд░реА { рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ ; рд╕реЗрдЯ ; }
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдУрд╡рд░рд░рд╛рдЗрдб int рдкреНрд░рдХрд╛рд░
- {
- get { return ( int ) ElementType.Obj; }
- {} рд╕реЗрдЯ рдХрд░реЗрдВ
- }
- }
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд░реНрдЧ ObjCategoryTableEntity: BaseObjTableEntity
- {
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдУрд╡рд░рд░рд╛рдЗрдб int рдкреНрд░рдХрд╛рд░
- {
- get { return ( int ) ElementType.ObjCategory; }
- {} рд╕реЗрдЯ рдХрд░реЗрдВ
- }
- }
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдп рдореЗрдВ, рд╢реНрд░реЗрдгреА рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рд╡рд╕реНрддреБрдУрдВ рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХреА рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХреЛ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдФрд░ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ Azure Table Storage рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рд╣реИ)ред рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рдлрд╝реАрд▓реНрдб рд╣реИ рдЬреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдПрдирдо рдПрд▓рд┐рдореЗрдВрдЯ рдЯрд╛рдЗрдк рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рд╡рд░реНрдЧ BaseObjTableEntity рд╣реИ рдФрд░ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдЧ рдХреНрд░рдорд╢рдГ ObjCategoryTableEntity рдФрд░ ObjTableEntity рд╣реИрдВред
рд╕рд╛рд░ TableServiceEntity рд╡рд░реНрдЧ рдореЗрдВ 3 рдЧреБрдг рд╣реЛрддреЗ рд╣реИрдВ: PartitionKey, RowKey, рдФрд░ Timestampред рдкрд╣рд▓реЗ рджреЛ рдПрдХ рд╕рдордЧреНрд░ рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдПрдХ рд╣реА рдкрд╛рд░реНрдЯреАрд╢рдирдХреЗ рд╕рд╛рде рд░рд┐рдХреЙрд░реНрдб рд╣рдореЗрд╢рд╛ рдПрдХ рд╣реА рд╕рд░реНрд╡рд░ рдХреЗ рднреАрддрд░ рд╕реНрдерд┐рдд рд╣реЛрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдИрдбреА рдХреЛ рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╢реНрд░реЗрдгреА рдореЗрдВ RowKey рд╢реНрд░реЗрдгреА рдХрд╛ рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ рд╣реИ, рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ RowKey рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ рд╣реИ, рдЬреЛ Blob рдХрд╛ рдирд╛рдо рд╣реИред рддрджрдиреБрд╕рд╛рд░, рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рд╕реНрд╡рдпрдВ рдмреНрд▓реЙрдм-рдПрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВ, рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡рд░реНрдЧ рдмрдирд╛рдПрдВрдЧреЗ:
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд░реНрдЧ ObjBlob
- {
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рд╛рдордЧреНрд░реА { рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ ; рд╕реЗрдЯ ; }
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд╛рдо { рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ ; рд╕реЗрдЯ ; }
- }
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдФрд░ рдЕрдВрдд рдореЗрдВ, рдпрд╣ рд╕рдм рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд░реНрдЧ:
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд░реНрдЧ ObjAzureRepository
- {
- рдирд┐рдЬреА рдХрд╛рд╕реНрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдУрдмреНрдЬрдиреЛрдЯреЗрдирд░рдиреЗрдо = "рдСрдмреНрд▓рдЬреНрд▓реБрдЗрдЯреНрд╕";
- рдкреНрд░рд╛рдЗрд╡реЗрдЯ рдХрд╛рд╕реНрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдУрдмреНрдЬрдЯреЗрдмрд▓ рдиреЗрдо = "рдУрдмреНрдЬреЗрдХреНрдЯрд▓рд╛рдЗрд╡реНрд╕";
- рдирд┐рдЬреА рдХрд╛рд╕реНрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ DefaultPartitionKey = "рдбрд┐рдлрд╝реЙрд▓реНрдЯ";
- рдирд┐рдЬреА рдЖрд╕рд╛рдиреА рд╕реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ userID;
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ ObjAzureRepository ( рд╕реНрдЯреНрд░рд┐рдВрдЧ userId)
- {
- рдпрд╣ .userID = userId;
- }
- рдирд┐рдЬреА рд╕реНрдЯреНрд░рд┐рдВрдЧ azureStorageConnectionString;
- рд╕рдВрд░рдХреНрд╖рд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ AzureStorageConnectionString
- {
- рдкреНрд░рд╛рдкреНрдд
- {
- рдЕрдЧрд░ ( рд╕реНрдЯреНрд░рд┐рдВрдЧ .IsNullOrWhiteSpace (azureStorageConnectionString))
- {
- azureStorageConnectionString = WebConfigurationManager.ConnectionStrings ["AzureStorageConnectionString"]ред
- }
- azureStorageConnectionString рд▓реМрдЯреЗрдВ;
- }
- }
- рдирд┐рдЬреА CloudStorageAccount azureStorageAccount;
- рд╕рдВрд░рдХреНрд╖рд┐рдд CloudStorageAccount AzureStorageAccount
- {
- рдкреНрд░рд╛рдкреНрдд
- {
- рд╡рд╛рдкрд╕реА azureStorageAccount ?? (azureStorageAccount = CloudStorageAccount.Parse (AzureStorageConnectionString));
- }
- }
- рдирд┐рдЬреА рдбрд╛рдпрдиреЗрдорд┐рдХрдЯреЗрдмрд▓рд╕реЗрд╡рд╛рдХрд░реНрдгреА <ObjCategoryTableEntity> рд╢реНрд░реЗрдгреАрд╕рдВрдкрд░реНрдХ;
- рдирд┐рдЬреА рдбрд╛рдпрдирд╛рдореИрдЯреЗрдмрд▓рд╕реЗрд╡рдХрд╕реЛрдирдЯреЗрдХреНрд╕реНрдЯ <ObjCategoryTableEntity> CategoryContext
- {
- рдкреНрд░рд╛рдкреНрдд
- {
- рдЕрдЧрд░ (categoryContext == null )
- {
- categoryContext = new DynamicTableServiceContext <ObjCategoryTableEntity> (AzureStorageAccount, ObjTableName);
- }
- рд╡рд╛рдкрд╕реА рд╢реНрд░реЗрдгреАрдХрдВрдЯрдЯреЗрдХреНрд╕реНрдЯ;
- }
- }
- рдирд┐рдЬреА рдбрд╛рдпрдиреЗрдорд┐рдХрдЯреЗрдмрд▓рд╕реЗрд╡рдХрд╕реЛрдирдЯреЗрдХреНрд╕реНрдЯ <ObjTableEntity> ObjContext;
- рдирд┐рдЬреА рдбрд╛рдпрдирд╛рдореИрдЯреЗрдмрд▓рд╕реЗрд╡рдХрд╕реЛрдирдЯреЗрдХреНрд╕реНрдЯ <ObjTableEntity> ObjContext
- {
- рдкреНрд░рд╛рдкреНрдд
- {
- рдЕрдЧрд░ (ObjContext == null )
- {
- ObjContext = new DynamicTableServiceContext <ObjTableEntity> (AzureStorageAccount, ObjTableName);
- }
- рд╡рд╛рдкрд╕реА ObjContext;
- }
- }
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реВрдЪреА <ObjCategoryTableEntity> GetObjCategories ()
- {
- рд╡рд╛рдкрд╕реА рд╢реНрд░реЗрдгреАрдХрдВрдЯрдЯреЗрдХреНрд╕реНрдЯ.рд▓реЙрдб ()ред рдЬрд╣рд╛рдБ <ObjCategoryTableEntity> (e => e.PartitionKey == userID && e.Type == ( int ) ElementType.ObjCoryory) .ToList ();
- }
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реВрдЪреА <ObjTableEntity> GetObjsByCategory (ObjCategoryTableEntity рд╢реНрд░реЗрдгреА)
- {
- рд╡рд╛рдкрд╕реА ObjContext.Load ()ред рдЬрд╣рд╛рдБред (s => s.PartitionKey == userID && s.CategoryId == рд╢реНрд░реЗрдгреАред RowKey && s.Type == ( int ) ElementTO.Obj) .ToList ();
- }
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ ObjBlob GetObjById ( рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЖрдИрдбреА)
- {
- CloudBlobClient рдЧреНрд░рд╛рд╣рдХ = AzureStorageAccount.CreateCloudBlobClient ();
- CloudBlobContainer рдХрдВрдЯреЗрдирд░ = client.GetContainerReference (ObjContainerName);
- рдХрдВрдЯреЗрдирд░ред рдХреНрд░рд┐рдПрдЯрдЗрдВрдлреЛрдЯреЙрдЯрд┐рд╕реНрдЯ ();
- CloudBlob Obj = container.GetBlobReference (id);
- рдирдпрд╛ ObjBlob () {рдирд╛рдо = рдЖрдИрдбреА, рд╕рд╛рдордЧреНрд░реА = Obj.DownloadText ()} рд╡рд╛рдкрд╕ рдХрд░реЗрдВ;
- }
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп AddCategory (ObjCategoryTableEntity рд╢реНрд░реЗрдгреА)
- {
- CategoryContext.Add (рд╢реНрд░реЗрдгреА);
- }
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп рдкрд░рд┐рд╡рд░реНрддрдирд╢реНрд░реЗрдгреА (ObjCategoryTableEntity рд╢реНрд░реЗрдгреА)
- {
- рд╢реНрд░реЗрдгреАрд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВред рдЕрджреНрдпрддрди (рд╢реНрд░реЗрдгреА);
- }
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп рдирд┐рд╖реНрдХрд╛рд╕рди рд╢реНрд░реЗрдгреА (ObjCategoryTableEntity рд╢реНрд░реЗрдгреА)
- {
- рдХреИрдЯреЗрдХреЛрдЯреЗрдХреНрд╕реНрдЯ.рдбреЗрд▓реАрдЯ (рд╢реНрд░реЗрдгреА);
- }
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп AddObj (ObjTableEntity Obj, string ObjContent)
- {
- ObjContext.Add (Obj);
- CloudBlobClient рдЧреНрд░рд╛рд╣рдХ = AzureStorageAccount.CreateCloudBlobClient ();
- CloudBlobContainer рдХрдВрдЯреЗрдирд░ = client.GetContainerReference (ObjContainerName);
- рдХрдВрдЯреЗрдирд░ред рдХреНрд░рд┐рдПрдЯрдЗрдВрдлреЛрдЯреЙрдЯрд┐рд╕реНрдЯ ();
- CloudBlob ObjBlob = container.GetBlobReference (Obj.RowKey);
- ObjBlob.UploadText (ObjContent);
- }
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп ChangeObj (ObjTableEntity Obj)
- {
- ObjContext.Update (Obj);
- }
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп RemoveObj (ObjTableEntity Obj)
- {
- ObjContext.Delete (Obj);
- }
- }
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдмрд╣реБрдд рддреБрдЪреНрдЫ рд╣реИ, рдХреЗрд╡рд▓ AddObj рдСрдмреНрдЬреЗрдХреНрдЯ рдЬреЛрдбрд╝рдиреЗ рдХреА рд╡рд┐рдзрд┐ рд╡рд┐рд╢реЗрд╖ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ, рдЬрд╣рд╛рдВ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдмреВрдБрдж рднреА рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЖрдк рдЕрдкрдиреА рдЖрдИрдбреА рджреНрд╡рд╛рд░рд╛ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рджреЛрдиреЛрдВ рддрд╛рд▓рд┐рдХрд╛рдУрдВ (рдХреНрд▓рд╛рдЙрдб рд╕рд╛рдЗрдб рдкрд░ рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛) рдФрд░ рдмреВрдБрдж-рдПрд╕ (рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЕрд╕реАрдорд┐рдд рдорд╛рддреНрд░рд╛ рдХреЗ рдПрдХ рддрддреНрд╡ рдХрд╛ рднрдВрдбрд╛рд░рдг) рдХреЗ рдлрд╛рдпрджреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рдЙрдирдХреЗ рдиреБрдХрд╕рд╛рди рд╕реЗ рдмрдЪрддреЗ рд╣реИрдВред
рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рд╡рд╣ рд╕рдм рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рд╢рд╛рдпрдж рдпрд╣ рдХрд┐рд╕реА рдХреЛ рд╕реНрдкрд╖реНрдЯ рдкреНрд░рддреАрдд рд╣реЛрдЧрд╛ рдФрд░ рдЙрд╕рдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЗрд╕реЗ рд╕реМ рдмрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрдЪреНрдЫрд╛ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рд╕рд╛рдордЧреНрд░реА рд╣реЛрдЧрд╛ рдФрд░ "рдХреНрд▓рд╛рдЙрдб" рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдПрдХ рдФрд░ рдмрд┐рдВрджреБред