آموزش برنامه‌نویسی از صفر ، بدون پیش‌نیاز، برای تمام سنین! آموزش برنامه‌نویسی ، از صفر بدون پیش‌نیاز!
🎯 شروع یادگیری
ورود کاربر جدید هستید؟ ثبت نام کنید
بستن تبلیغات
تسلط کامل بر سی‌شارپ با یک دوره پروژه‌محور

یادگیری سی شارپ از مفاهیم پایه تا پروژه محور: شی‌گرایی، کار با SQL و LINQ، ORMها (Entity Framework)، ساخت پروژه مدیریت رستوران با گزارشات حرفه‌ای و امکانات کامل!

مشاهده بیشتر
تسلط جامع بر MVC Core برای توسعه وب حرفه‌ای

یادگیری MVC Core از مبانی تا پیشرفته: شی‌گرایی، Routing، Entity Framework، امنیت، تست یونیت، Razor، Ajax، و پروژه‌های کاربردی! یک دوره کامل برای تسلط بر توسعه وب با ASP.NET Core. به صورت حضوری و آنلاین!

مشاهده بیشتر

آموزش MVC Core-آموزش استفاده از Azure NoSQL در MVC Core

آموزش MVC Core-آموزش استفاده از Azure NoSQL در MVC Core

مشکل

نحوه استفاده از پایگاه داده Azure NoSQL در ASP.NET Core

راه حل

ایجاد یک class library و اضافه کردن بسته NuGet Microsoft.Azure.DocumentDB.Core.
یک کلاس برای تنظیم کردن تنظیمات اضافه کنید.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public class AzureNoSqlSettings 
    
        public AzureNoSqlSettings(string endpoint, string authKey, 
                                  string databaseId, string collectionId) 
        
            if (string.IsNullOrEmpty(endpoint)) 
                throw new ArgumentNullException("Endpoint"); 
    
            if (string.IsNullOrEmpty(authKey)) 
                throw new ArgumentNullException("AuthKey"); 
    
            if (string.IsNullOrEmpty(databaseId)) 
                throw new ArgumentNullException("DatabaseId"); 
    
            if (string.IsNullOrEmpty(collectionId)) 
                throw new ArgumentNullException("CollectionId"); 
    
            this.Endpoint = endpoint; 
            this.AuthKey = authKey; 
            this.DatabaseId = databaseId; 
            this.CollectionId = collectionId; 
        
    
        public string Endpoint { get; } 
        public string AuthKey { get; } 
        public string DatabaseId { get; } 
        public string CollectionId { get; } 
    }
<button></button>

یک کلاس repository ایجاد کرده که با یک نوع generic کار می کند.یک constructor و private methods برای مقدار دهی اولیه Azure client اضافه کنید:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public AzureNoSqlRepository(AzureNoSqlSettings settings) 
        
            this.settings = settings ?? throw new ArgumentNullException("Settings"); 
            Init(); 
        
        private AzureNoSqlSettings settings; 
        private DocumentClient client; 
    
        private void Init() 
        
            client = new DocumentClient( 
new Uri(this.settings.Endpoint), this.settings.AuthKey); 
            CreateDatabaseIfNotExistsAsync().Wait(); 
            CreateCollectionIfNotExistsAsync().Wait(); 
        
    
        private async Task CreateDatabaseIfNotExistsAsync() 
        
            await client.ReadDatabaseAsync( 
UriFactory.CreateDatabaseUri(this.settings.DatabaseId)); 
        
    
        private async Task CreateCollectionIfNotExistsAsync() 
        
            await client.ReadDocumentCollectionAsync( 
                    UriFactory.CreateDocumentCollectionUri( 
this.settings.DatabaseId, this.settings.CollectionId)); 
        
<button></button>

یک متد برای گرفتن(get) یک یا چند آیتم اضافه کنید.

1
2
3
4
5
6
7
8
9
10
11
12
13
private Uri GetCollectionUri() 
        
            return UriFactory.CreateDocumentCollectionUri( 
                   this.settings.DatabaseId, this.settings.CollectionId); 
        
    
        private Uri GetDocumentUri(string documentId) 
        
            return UriFactory.CreateDocumentUri( 
                   this.settings.DatabaseId, this.settings.CollectionId, documentId); 
        
 
<button></button>

اکنون متدهای عمومی(public methods) برای repository اضافه کنید:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
public async Task< List< T > > GetList()
        {
            var query = this.client
                            .CreateDocumentQuery< T >(GetCollectionUri())
                            .AsDocumentQuery();
 
            var results = new List< T >();
            while (query.HasMoreResults)
            {
                results.AddRange(await query.ExecuteNextAsync< T >());
            }
 
            return results;
        }
        public async Task< T > GetItem(string id)
        {
            Document document = await this.client.ReadDocumentAsync(
GetDocumentUri(id));
            return (T)(dynamic)document;
        }
 
        public async Task< Document > Insert(T item)
        {
            return await this.client.CreateDocumentAsync(GetCollectionUri(), item);
        }
 
        public async Task< Document > Update(string id, T item)
        {
            return await this.client.ReplaceDocumentAsync(GetDocumentUri(id), item);
        }
 
        public async Task< Document > InsertOrUpdate(T item)
        {
            return await this.client.UpsertDocumentAsync(GetCollectionUri(), item);
        }
 
        public async Task Delete(string id)
        {
            await this.client.DeleteDocumentAsync(GetDocumentUri(id));
        }
<button></button>

Repository تزریق (Inject) کرده و استفاده کنید:

1
2
3
4
5
6
7
8
9
public class MovieService : IMovieService 
    
        private readonly IAzureNoSqlRepository< Movie > repository; 
    
        public MovieService(IAzureNoSqlRepository< Movie > repository) 
        
            this.repository = repository; 
        
<button></button>

در ASP.NET Core Web Application قسمت configure services:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public void ConfigureServices( 
    IServiceCollection services) 
    services.AddScoped< IAzureNoSqlRepository< Movie > >(factory = >
    {
        return new AzureNoSqlRepository< Movie >(
            new AzureNoSqlSettings(
                endpoint: Configuration["NoSql_Endpoint"],
                authKey: Configuration["NoSql_AuthKey"],
                databaseId: Configuration["NoSql_Database"],
                collectionId: Configuration["NoSql_Collection"]));
    });
    services.AddScoped< IMovieService, MovieService >();
 
    services.AddMvc();
}
<button></button>

مباحثه

کد نمونه نیاز به تنظیم حساب کاربری Azure، پایگاه داده و مجموعه NoSQL دارد. دستورالعمل برای این را می توان در اینجا یافت.

1
https://docs.microsoft.com/en-gb/azure/cosmos-db/create-documentdb-dotnet#create-a-database-account<button></button>

شما می توانید Source Code این مقاله را از لینک زیر دانلود کنید:

1
https://github.com/TahirNaushad/Fiver.Azure.NoSql<button></button>

شما دانشجویان گرامی می توانید فایل مربوط به این آموزش را از قسمت پایانی این مقاله دانلود نمایید .

1397/03/06 2023 1400
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...