شروع کار با LiteDB
دوشنبه 11 آبان 1394در این مقاله با استفاده از یک مثال ساده میخواهیم نشان دهیم که چگونه میتوان با استفاده از LiteDB اسناد و مدارک را مدیریت کرد . LiteDB مبتنی بر پایگاه داده nosql توسط دیوید موریسیو توسعه داده شده است.
در این مقاله با استفاده از یک مثال ساده میخواهیم نشان دهیم که چگونه میتوان با استفاده از LiteDB اسناد و مدارک را مدیریت کرد
LiteDB مبتنی بر پایگاه داده nosql توسط دیوید موریسیو توسعه داده شده است. این پایگاه داده سبک می باشد .
LiteDB به طور کامل متن باز و رایگان می باشد.
برنامه ای که در این مقاله استفاده میکنیم با استفاده از سی شارپ نوشته شده است و قابلیت افزودن نام و شماره و جستجو، حذف و افزودن را دارد .
برای مطالعه بیشتر LiteDB میتوانید از لینک LiteDB Document Store استفاده نمایید.
تصویر زیر برنامه ما را نشان میدهد .
کلاسی با نام Issue ایجاد میکنیم و مانند زیر فیلد ها را ایجاد میکنیم.
public class Issue { [BsonId] public Guid IssueId { get; set; } public DateTime DateTime { get; set; } public string ErrorText { get; set; } public string IssueType { get; set; } }
این برنامه دارای یک صفحه برای نمایش و مدیریت تمام امکانات برنامه از قبیل حذف کردن و افزودن و فیلترینگ می باشد.
برای کار ما باید در درایو C پوشه ای با نام Temp ایجاد نماییم و در داخل ان پوشه ای با نام DB را به ان اضاف کنیم.
یک متد Add ایجاد میکنیم و کد زیر را در ان قرار میدهیم.
public void Add(Issue issue) { // Open data file (or create if not exits) using(var db = new LiteEngine(liteDBPath)) { var issueCollection = db.GetCollection < Issue > ("issues"); // Insert a new issue document issueCollection.Insert(issue); IndexIssue(issueCollection); } }
همانطور که در زیر میبینید ما از Lambda استفاده کرده ایم. ما به راحتی میتوانیم رکورد ها را با معیار های خاص فیلتر کنیم.
private void IndexIssue(Collection < Issue > issueCollection) { // Index on IssueId issueCollection.EnsureIndex(x => x.IssueId); // Index on ErrorText issueCollection.EnsureIndex(x => x.ErrorText); // Index on DateTime issueCollection.EnsureIndex(x => x.DateTime); // Index on IssueType issueCollection.EnsureIndex(x => x.IssueType); }
قطعه کد زیر برای بروز رسانی میباشد.
public void Update(Issue issue) { // Open data file (or create if not exits) using(var db = new LiteEngine(liteDBPath)) { var issueCollection = db.GetCollection < Issue > ("issues"); // Update an existing issue document issueCollection.Update(issue); } }
کد زیر برای حذف براساس شماره شناسه موجود است.
public void Delete(Guid issueId) { using(var db = new LiteEngine(liteDBPath)) { var issues = db.GetCollection < Issue > ("issues"); issues.Delete(i => i.IssueId == issueId); } }
کد زیر برای نمایش تمام رکورد های موجود در بانک است.
public IList < Issue > GetAll() { var issuesToReturn = new List < Issue > (); using(var db = new LiteEngine(liteDBPath)) { var issues = db.GetCollection < Issue > ("issues"); var results = issues.All(); foreach(Issue issueItem in results) { issuesToReturn.Add(issueItem); } return issuesToReturn; } }
در کد زیر که یک کالکشن از نمونه های Issue بر می گرداند آورده شده است.به کد زیر توجه کنید با وجود اینکه ما نمونه ای از نوع DateTime پاس داده ایم ولی تنها می توانیم از مقدار Date استفاده کنیم .
public IList < Issue > Get(string issueType, DateTime datetime) { var issuesToReturn = new List < Issue > (); using(var db = new LiteEngine(liteDBPath)) { var issues = db.GetCollection < Issue > ("issues"); IEnumerable < Issue > filteredIssues; if (issueType.Equals("All")) filteredIssues = issues.All(); else filteredIssues = issues.Find(i => i.IssueType.Equals(issueType)); foreach(Issue issueItem in filteredIssues) { issuesToReturn.Add(issueItem); } return issuesToReturn.FindAll(i => i.DateTime.Date == datetime.Date); } }
- C#.net
- 2k بازدید
- 1 تشکر