Mohsens22

ناظم انجمن
  • تعداد ارسال ها

    69
  • تاریخ عضویت

  • آخرین بازدید

  • روز های برد

    25

آخرین بار برد Mohsens22 در 15 تیر

Mohsens22 یکی از رکورد داران بیشترین تعداد پسند مطالب است!

اعتبار در سایت

99 فوق العاده

درباره Mohsens22

  • درجه
    کاربر ثابت
  • تاریخ تولد 1 مرداد 758

اطلاعات تماس

  • آدرس تارنما
    http://elektrosoft.net
  • یاهو
    spartanwebber
  • اسکایپ
    mohsens22
  • حساب مایکروسافت
    mohsens2@outlook.com
  • مرورگر
    Microsoft Edge
  • شماره تماس
    09199278128
  • تلگرام
    mohsens22

اطلاعات نمایه

  • جنسیت
    آقا
  • مکان
    زیر Initialize Component
  • علایق
    ویندوز ، اینترنت اشیا ، دیتا ، واقعیت افزوده
  • نام توسعه دهندگی
    Mohsens22
  • سیستم عامل کامپیوتر
    Windows 10
  • سیستم عامل موبایل
    Windows 10
  • موبایل
    Microsoft Lumia 535 Dual SIM

آخرین بازدید کنندگان نمایه

181 بازدید کننده نمایه
  1. @kamrantak شما باید یه یوزر ایجنت ایجاد کنی، موقع نویگیت کردن وب ویو به جایی که میخواید، از اون ایجنت استفاده کنید. //Desktop string userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.246"; //Mobile //string userAgent = "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 950) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Mobile Safari/537.36 Edge/13.10586"; HttpRequestMessage httpRequestMessage = new HttpRequestMessage(HttpMethod.Post, new Uri("http://www.bing.com")); httpRequestMessage.Headers.Append("User-Agent", userAgent); WebView.NavigateWithHttpRequestMessage(httpRequestMessage); این کد ویندوز یونیورسال هست. WebView هم نام آبجکت وب ویو مورد نظرمون هست.
  2. برنامه ای برای یونیورسال کردنش ندارید؟
  3. با سلام. امروز با معرفی و آموزش Windows Template Studio که به تازگی از سمت مایکروسافت منتشر شده است، در خدمت شما هستیم. ویندوز تمپلیت استودیو در حقیقت یک محیط در ویژوال استودیو است که شما پروژه ی خود + امکانات و شمای کلی پروژه را تعریف میکنید، و تمپلیت استودیو قسمت زیادی از نرم افزار را برایتان کد می زند! ویندوز تمپلیت استودیو یک جانشین تمام عیار برای App Studio است که هم برای مبتدیان و هم برای حرفه ای ها کاربردی است. حالا بریم سراغ اصل مطلب: به چه چیزی نیاز داریم؟ 1-ویندوز 10 2-ویژوال استودیو 2017 (روی 2015 تست نشده، امکان دارد به مشکلاتی بخورد) 3-آخرین نسخه از SDK ویندوز 10 تمپلیت استودیو را دانلود و نصب کنید! 1-از این لینک آخرین نسخه ی ویندوز تمپلیت استودیو را دانلود کنید. 2-فایل دانلود شده را اجرا کنید تا فایل های مربوطه را دانلود و نصب کند. امکان دارد که برای نصب به VPN نیاز داشته باشید. حجم دانلودی هم زیر 1 گیگابایت می باشد. شروع به کار با تمپلیت استودیو 1-ویژوال استودیو را باز کنید. قسمت File/new/project را بزنید. 2- در صورت نصب کامل و صحیح تمپلیت استودیو باید در قسمت C#/Universal Windows ، گزینه ی Windows Template Studio(Universal Windows) را ببینید. روی آن کلیک کنید تا صفحه ی تمپلیت استودیو باز شود. 3- در اینجا شما نوع پروژه و فریمورک خود را مشخص میکنید. -نوع پروژه: الف)Navigation Pane شما یک پروژه به نوع نویگیشن پین خواهید داشت که نویگیشن بین صفحات مختلف با کمک همبرگر منو صورت می گیرد. ب)Blank تمپلیت استودیو به شما یک پیج خالی تحول خواهد داد. هر جور که خود صلاح میدانید نویگیشن آن را درست کنید ج)Pivot and tabs یک پیج حاوی چند تب به شما داده می شود که نویگیشن به کمک پیوت (Pivot) انجام خواهد شد. -فریموک استفاده شده(معماری نرم افزار): الف) Code Behind کد نویسی منطقی شما داخل کد بیهایند انجام خواهد شد. ب)MVVM Light کد نویسی با معماری MVVM انجام خواهد شد و از فریمورک سوم شخص MVVM Light استفاده خواهد شد. ج)MVVM Basic کد نویسی به صورت MVVM انجام می شود اما به صورت ساده. از هیچ گونه فریمورکی هم استفاده نخواهد شد. بعد از انتخاب فریمورک و نوع نویگیشن، Next را بزنید. 4- انتخاب ویژگی ها و امکانات برنامه الف) پیج ها در می توانید پیج های مختلفی را به نرم افزار خود اضافه کنید. انواع این پیج ها : ساده، همراه با چارت، همراه با گرید ویو، همراه با نقشه، پیج مستر دیتیل (همانند نرم افزار میل، تلگرام دسکتاپ، یونیگرام و ...)، همراه با مدیا پلیر، پیج تنظیمات، پیج تب دار (همراه با پیوت) و وب ویو هستند. ب) امکانات در اینجا می توانید امکانات مختلفی را به نرم افزار خود اضافه کنید. -مدیریت لایف سایکل نرم افزار شامل: مدیریت ذخیره ی ستینگز، مدیریت ساسپند و ادامه ی نرم افزار -بک گراند تسک -ارتباط به کاربر شامل : توست نوتیفیکیشن، پوش نوتیفیکیشن از طریق داشبورد، کاشی زنده و پوش نوتیفیکیشن آژور. امکانات نرم افزار خود را انتخاب کنید، Create را بزنید و صبر کنید تا تمپلیت استودیو نرم افزار را برایتان کد بزند مشاهده می شود که تمپلیت استودیو بسیار کد تمیز و قابل فهمی را جنریت میکند. که به راحتی قابل شخصی سازی و ادامه ی روند توسعه ی نرم افزار است. در ادامه نرم افزار را اجرا می کنیم به خوبی کار میکند ویندوز تمپلیت استودیو یک پروژه ی متن باز است که می توانید در گیت هاب پیدایش کنید.
  4. @sab2020 اولا باید مطمئن بشی که هر دوتا پروژه ی .SQLite و .Tools رو نصب کرده باشی دوما مطمئن شو که نسخه ی Prerelease نگرفته باشی که در این صورت فکر میکنم کد مایگریشنش عوض شد. سوما مطمئن شو که توی کنسول Target Project روی همونی هست که اون دوتا نوگت رو روش نصب کردی و انتیتی و DBContext رو ست کردی. (توی مثال دوم من پروژه ی Core بود) در آخر هم اگر دیدی هیچ کدومش چاره ساز نبود کد ها رو چک کن، پاک کردن obj , bin و باز کردن با دسترسی ادمین و Rebuild رو امتحان کن. جواب نداد یه پروژه تست دیگه بساز با اون مایگریشن کن. باز هم اگه چاره ساز نبود اروری که میده رو بفرست برسی کنیم ببینیم چیه
  5. c#

    @اورمان فقیهی محدث من فکر نکنم که UWP باشه، اونجور که به نظر میاد ادوبی اکس دی یه Win32 خالصه! ته تهش به وسیله ی این راه، از API های ویندوز 10 یونیورسال استفاده کرده. در مورد فایل اسوسیشن (همون قرار دادن آیکون و واکنش برای انواع فایل) باید این کار رو کنید: 1-تشریف میبرید به منیفست قسمت Decleration 2-یک File Type Association اد میکنی 3-مشخصاتش رو پر میکنی (نام، لوگو، پسوند و ...) خب تموم شد! الان فقط باید از تو App.XAML.cs اورراید تابع OnFileActivated باید بگی که موقع باز شدن این نوع فایل چکار کنه.
  6. c#

    برای LockScreen Detailed Notification منتها یکم اذیت میشی، ولی یکم سرچ بیشتر کنی، برات ملموس تر میشه. دو تا راه است: 1- با استفاده از کتابخانه ی Notifications library (Microsoft.Toolkit.Uwp.Notifications): TileContent content = new TileContent() { Visual = new TileVisual() { LockDetailedStatus1 = "Meeting with Thomas", LockDetailedStatus2 = "11:00 AM - 12:30 PM", LockDetailedStatus3 = "Studio F", } }; 2- با استفاده از قالب XML : من اینجا قالبی که توی دنا استفاده کردم رو میدم، یه نگاهی بهش بنداز. اون قسمت DetailLC مربوط به لاک اسکرینه که Hint ش رو اسم اپلیکیشنم رو دادم، که میتونی عوضش کنی به هرچی که دوست داری البته میتونی اون تیکه رو جدا کنی و بزاری توی یه فایل XML دیگه که کد اضافه نداشته باشی. فکر نکنم بقیه ی کد هایی که لایو تایل ست میکنند به دردت بخورن. از اپلیکیشن Notifications Visualizer استفاده کن، قالب های جالبی داره. <?xml version="1.0" encoding="utf-8" ?> <tile> <visual branding="nameAndLogo"> <binding template="TileMedium" hint-textStacking="center"> <image src="TileMediumImageSource" placement="peek" hint-crop="circle" /> <text hint-style="base" hint-wrap="true" hint-align="center">TileMediumtext</text> <text hint-style="captionSubtle" hint-align="center">TileMediumSubText</text> </binding> <binding template="TileWide" hint-lockDetailedStatus1="DetailLC" hint-lockDetailedStatus2="Denna" > <group> <subgroup hint-weight="33"> <image src="TileWideImageSource" hint-crop="circle" /> </subgroup> <subgroup hint-textStacking="center"> <text hint-wrap="true">TileWideText</text> </subgroup> </group> </binding> <binding template="TileLarge" hint-textStacking="center"> <group> <subgroup hint-weight="1" /> <subgroup hint-weight="2"> <image src="TileLargeImageSource" hint-crop="circle" /> </subgroup> <subgroup hint-weight="1" /> </group> <text hint-style="title" hint-align="center">TileLargeText</text> <text hint-style="subtitleSubtle" hint-align="center">TileLargeSubText</text> </binding> </visual> </tile> اینم کد سی شارپش : string result = "Nothing to do today :) add something todo. "; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(await FileIO.ReadTextAsync(await StorageFile.GetFileFromApplicationUriAsync( new Uri("ms-appx:///LiveTile.xml")))); //Set LockScreen Detail xmlDoc.LoadXml(xmlDoc.GetXml().Replace("DetailLC", result)); var tup = TileUpdateManager.CreateTileUpdaterForApplication(); tup.Update(new TileNotification(xmlDoc)); نکته: result چیزیه که میخوای نمایش بدی. نکته 2: xmldoc داریم فایل xml رو از جایی که ذخیره شده، لود میکنیم. و در ادامه هم جایگذاری هارو انجام میدیم. تا اینجا جواب سوالت رو گرفتی ! که البته میتونی با این ها بقیه ی لایو تایل هات رو هم بدین ترتیب ست کنی //Set Medium tile StorageFolder storageFolder = ApplicationData.Current.LocalFolder; //Hmmm this is where I'm looking for a picture StorageFile sampleFile = await storageFolder.GetFileAsync("avatar.jpg"); xmlDoc.LoadXml(xmlDoc.GetXml().Replace("TileMediumImageSource", sampleFile.Path )); xmlDoc.LoadXml(xmlDoc.GetXml().Replace("TileMediumtext", "Dear Orman!")); xmlDoc.LoadXml(xmlDoc.GetXml().Replace("TileMediumSubText", "Let's Do!")); //Set Wide Tile xmlDoc.LoadXml(xmlDoc.GetXml().Replace("TileWideImageSource", sampleFile.Path)); xmlDoc.LoadXml(xmlDoc.GetXml().Replace("TileWideText", result)); نکته: avatar.jpg به عکسیه روی حافظه اگه میخوای ازش استفاده کنی، به اون عکسی که میخوای نمایش بده آدرس دهی کن.
  7. c#

    سلام. برای Badge اول باید داخل منیفست تیکش رو بزنی بعدش حالا کد هاش رو بزن var type = BadgeTemplateType.BadgeNumber; var xml = BadgeUpdateManager.GetTemplateContent(type); var elements = xml.GetElementsByTagName("badge"); var element = elements[0] as Windows.Data.Xml.Dom.XmlElement; //Add your value here. int val = 10; element.SetAttribute("value", val.ToString()); var updator = BadgeUpdateManager.CreateBadgeUpdaterForApplication(); var notification = new BadgeNotification(xml); updator.Update(notification); داخل متغیر Val هرچی بزنی، به صورت عدد Badge نشون میده.
  8. یه سری به این تاپیک بزن رفع مشکلات ویژوال استودیو 2017 - آموزش ابزارها و نرم افزار ها - وین نو...
  9. دومین تمرین کد با EFCore در پلتفرم یونیورسال: تعیین پروژه : یک سیستم ساده، که کاربر بتواند دانش آموزان را ذخیره کند. ابتدا یک پروژه ی یونیورسال ساده میسازیم. داخل سولوشن، کلیک راست زده و از منوی Add new project گزینه ی ClassLibrarty(Windows Universal) را میزنیم(من نام Core را برای آن انتخاب کردم. بعد از انجام این کار، نیاز است که پروژه ی اصلی را به پروژه ی Core رفرنس دهیم. برای این کار در پروژه ی اصلی Add reference را زده و از قسمت Projects روی Core تیک بزنید. حال این دو پکیج را از طریق کنسول نوگت یا رابط گرافیکی نوگت روی پروژه ی Core نصب میکنیم: Install-Package Microsoft.EntityFrameworkCore.Sqlite Install-Package Microsoft.EntityFrameworkCore.Tools *نکته: نیاز است که پکیج Microsoft.NETCore.UniversalWindowsPlatform نسخه ی 5.2.2 به بالا باشد. داخل پروژه ی Core می رویم، حالا کلاس های انتیتی خود را میسازیم. کلاس انتیتی چیست و چرا میسازیم؟ در جواب باید بگویم که این کلاس ها، کلاس های ساده اند که به تیبل داخل دیتابیس و در داخل کد، قالبی برای مقادیر پایگاه داده خواهند بود. کلاس اول: Teacher.cs public class Teacher { public int ID { get; set; } public string Name { get; set; } } کلاس بعدی: student.cs public class Student { public int ID { get; set; } public string Name { get; set; } //Relation to Teacher public virtual Teacher Teacher { get; set; } } هممم .... در پراپرتی Teacher چه اتفاقی افتاد؟ در جواب باید بگویم که ما یک ریلیشن (رابطه) چند به یک در اینجا داریم. نیاز است که پراپرتی مورد نظر را virtual کنیم و سپس نوع آن را از نوع تایپی که به آن ریلیشن دارد؛ انتخاب کنیم. (البته این تمام ماجرا نیست) نکته در مورد ID : انتیتی فریمورک به صورت هوشمند روی کلمه ی ID حساسیت دارد و به صورت خودکار آن را پرایمری کی تعیین کرده و آنرا Auto increment میکند. البته میشود به راحتی این تنظیمات را شخصی سازی کرد. گرچه با Fluent API و اتریبیوت [key] قابل تعیین است. کار ما با کلاس ها تمام شد! حالا یک فایل کلاس ساخته و آن را Model.cs نامگذاری میکنیم. این کلاس را از DbContext ارث بری میکنیم. نیاز است که از فضای نامی Microsoft.EntityFrameworkCore; استفاده کنیم. حالا به ازای هر کلاس انتیتی، یک DbSet میسازیم و در آخر OnConfig را اورراید میکنیم. بدین ترتیب: public class Model : DbContext { public DbSet<Student> Students { get; set; } public DbSet<Teacher> Teachers { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlite("Data Source=blogging.db"); } } حالا باید دیتابیس را مایگریت کنیم! مایگریت کردن به معنای مپ کردن کلاس ها به روی دیتابیس و یا تغییرات در آنهاست. پروژه را Rebuild کنید. اگر هنگام مایگریت کردن به مشکل خوردید، ویژوال استودیو را ببندید و با دسترسی Admin دوباره باز کنید. برای ایجاد یک مایگریشن، در Package manager این کد را بزنید: Add-Migration سپس کنسول از شما نام میخواهد، یک نام به دلخواه انتخاب کنید. بعد از آن در مسیر پروژه ی Core یک پوشه به نام Migration به وجود می آید که در آن کلاس ها و کد های مربوط به مایگریشن وجود دارد (میتوانید آن ها برسی کنید، ولی دستکاری نکنید ). حالا نیاز است که این مایگریشن، مایگریت شود. یعنی دیتابیس داخل دستگاهی که نرم افزار در آن اجرا می شود، ساخته و Map شود. اگر تغییرات وجود داشت، اعمال شود. این مایگریت در اپلیکیشن ها(مانند یونیورسال و زامارین) در ران تایم صورت میگیردو یعنی کدی مینویسیم که اگر مایگریشن اعمال نشده وجود داشت، اعمال کند. اما در انتیتی فریمورک در ASP.NET قبل از رانتایم باید مایگریت صورت بگیرد. برای مایگریت به پروژه ی اصلی بروید و در کانستراکتور App.Xaml.Cs این کد را اضاف کنید: //Core.Model is where your DbContext is located. using (var db = new Core.Model()) { db.Database.Migrate(); } *نکته: پس از هرگونه تغییر در کلاس های انتیتی، نیاز به ساخت مایگریشن جدید دارید. کار ما با ساخت و کافیگ دیتابیس تمام شد !!!! حالا برویم سراغ بقیه ی کار. کد گرفتن تمام داده های روی دیبی ست(تیبل): using (var db = new Model()) { //a gets all entities in databse. you can do what ever var a= db.Students.Include("Teacher").ToList(); } //you should add .include("Name of entity") for relations *نکته : کد .Include("Teacher") را باید بزنیم تا ارتباطات به انتیتی Teacher هم بتوانیم بگیریم. کد برای اینسرت کردن داده روی تیبل ها: using (var db = new Model()) { //std is a student object to add. better to say: var std = new student(); db.Students.Add(std); //WE should add this to confirm that we want to relate this Item to an existing one db.Entry(sdt.Teacher).State = EntityState.Unchanged; //then saves it db.SaveChanges(); } نکته: کد db.Entry(sdt.Teacher).State = EntityState.Unchanged; برای این است که تایید کنیم که آیتم Teacher یک مقدار موجود روی Teachers است. اگر این کار را نکنیم، یا انتیتی فریمورک مقدار جدید اضافه میکند و به آن لینک میکند، یا این که ارور می دهد. کد دیلیت کردن: using (var db = new Model()) { //student is an existing instance of student db.Remove(student); db.SaveChanges(); } کد دستکاری: using (var db = new Model()) { //Student is the object subject to change (Update) db.Students.Add(Student); db.Entry(Student).State = EntityState.Modified; db.Entry(Student.Teacher).State = EntityState.Unchanged; //We are about to say : Hey, EFCore! Our Student is changed, but The teacher is existing on DB. db.SaveChanges(); } *نکته : در خط db.Entry(Student).State = EntityState.Modified; ما سعی داریم به انتیتی فریمورک بگوییم که این آبجکت در دیتابیس وجود دارد و ما میخواهیم آن را تغییر دهیم. در غیر این صورت انتیتی فریمورک یک آیتم جدید به دیتابیس اینسرت می کند و به دلیل وجود آن آیتم در دیتابیس، به خطا می خوریم. * نکته: در خط db.Entry(Student.Teacher).State = EntityState.Unchanged; ما به انتیتی فریمورک میگوییم که طبق خط بالا آبجکت student عوض شده اما Teacher آن همچنان در دیبی ست(تیبل) Teachers وجود دارد. در نتیجه Teacher جدید نساز! یک کوئری ساده برای سرچ دانش آموز با ID : using (var db = new Model()) { //We want student(s) by the ID of 12 and we save it in variable a var a== db.Students.Where(x => x.ID == 12).Include("Teacher").ToList(); //Again that Include Teacher! } فایل سورس کد همین آموزش پیوست شد ! EntityCoreLearn.rar همچنین بنده قبلا یک پروژه با انتیتی فریموک کور نوشته ام که کد های آن را از این لینک میتوانید برسی کنید.
  10. با سلام دوباره، با اولین آموزش سریع پروژه محور انتیتی فریمورک کور در خدمت شما هستیم تعیین پروژه : ذخیره ی داده ها در دیتابیس با انتیتی فریمورک کور. به چه چیزی نیاز داریم ؟ -ویندوز 10 -ویژوال استودیو -آخرین ورژن ویندوز SDK پروژه ی جدید بسازید: -ویژوال استودیو را باز کنید، -File>New>Project... -از منوی C# گزینه ی Blank App (Universal Windows) را انتخاب کنید، نامی برایش تایین کنید و OK را بزنید. (من نام EFGetStarted.UWP را انتخاب کردم) Microsoft.NETCore.UniversalWindowsPlatform را به آخرین نسخه آپگرید کنید. انتیتی فریمورک کور به Microsoft.NETCore.UniversalWindowsPlatform نسخه ی 5.2.2 به بعد نیاز دارد! انتیتی فریمورک کور را نصب کنید! حال این دو پکیج را از طریق کنسول نوگت یا رابط گرافیکی نوگت روی پروژه ی Core نصب میکنیم: Install-Package Microsoft.EntityFrameworkCore.Sqlite Install-Package Microsoft.EntityFrameworkCore.Tools Model خود را بسازید! -Project ‣ Add Class... -برای کلاس جدید از نام Model.cs استفاده کنید -کد زیر را جایگزین کنید: using Microsoft.EntityFrameworkCore; using System.Collections.Generic; namespace EFGetStarted.UWP { public class BloggingContext : DbContext { public DbSet<Blog> Blogs { get; set; } public DbSet<Post> Posts { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlite("Data Source=blogging.db"); } } public class Blog { public int BlogId { get; set; } public string Url { get; set; } public List<Post> Posts { get; set; } } public class Post { public int PostId { get; set; } public string Title { get; set; } public string Content { get; set; } public int BlogId { get; set; } public Blog Blog { get; set; } } } دیتابیس خود را بسازید! داخل کنسول نوگت این کد را بزنید که اولین مایگریشن را برای شما انجام دهد : Add-Migration MyFirstMigration داخل App.XAML.cs نیز این کد را بزنید: public App() { this.InitializeComponent(); this.Suspending += OnSuspending; using (var db = new BloggingContext()) { db.Database.Migrate(); } } نیاز است این فضای نامی ها را using کنید: using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.InteropServices.WindowsRuntime; از Model استفاده کنید! داخل MainPage.xaml این کد ها را وارد کنید: <Page x:Class="EFGetStarted.UWP.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:EFGetStarted.UWP" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" Loaded="Page_Loaded"> <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <StackPanel> <TextBox Name="NewBlogUrl"></TextBox> <Button Click="Add_Click">Add</Button> <ListView Name="Blogs"> <ListView.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding Url}" /> </DataTemplate> </ListView.ItemTemplate> </ListView> </StackPanel> </Grid> </Page> و داخل MainPage.xaml.cs : public sealed partial class MainPage : Page { public MainPage() { this.InitializeComponent(); } private void Page_Loaded(object sender, RoutedEventArgs e) { using (var db = new BloggingContext()) { Blogs.ItemsSource = db.Blogs.ToList(); } } private void Add_Click(object sender, RoutedEventArgs e) { using (var db = new BloggingContext()) { var blog = new Blog { Url = NewBlogUrl.Text }; db.Blogs.Add(blog); db.SaveChanges(); Blogs.ItemsSource = db.Blogs.ToList(); } } } حالا نرم افزار را اجرا کنید تا در عمل کار را مشاهده کنید: *نکته: امکان دارد موقع اجرای اولیه ی پروژه های انتیتی فریمورک ویژوال استودیو ارور دهد، در صورت ارور، دوباره پروژه را بیلد و اجرا کنید. لینک پروژه ی همین آموزش منبع : مایکروسافت
  11. با سلام و عرض ادب و احترام خدمت شما. امروز با آموزش اولیه ی انتیتی فریمورک کور در خدمت شما هستیم. در این آموزشی شما : با مفاهیم پایه ای ORM و انتیتی فریمورک آشنا خواهید شد + با یک آموزش پروژه محور، راه اندازی انتیتی فریمورک کور و عملگر های اصلی آن را فرا خواهید گرفت. همانطور که می دانید، انتیتی فریمورک یک نوع ORM است. (از نظر خودم بهترین ORM) که اجازه ی ارتباط و مدیریت دیتابیس را در اختیارتان قرار می دهد. انتیتی فریمورک کور همان انتیتی فریمورک است که به صورت فراپلتفرمی اجرا شده است. این ORM میتواند در پروژه های دات نت فریمورک، زامارین، دات نت کور، ویندوز اپلیکیشن و ... روی هر پلتفرمی اجرا شود! ORM چیست؟ ORM (Object Relational Mapping) یک لایه مترجم بین زبان برنامه‌نویسی و پایگاه داده رابطه‌ای است که این دو را به هم تبدیل می‌کند و در عمل باعث می‌شود که این دو حیطه کاملا متفاوت زبان یکدیگر را به خوبی بشناسند و با هم تبادل اطلاعات داشته باشند. یک ORM قوی ، برنامه را از نوع پایگاه داده استفاده شده، جدا می‌کند. این کار باعث می‌شود که استقلال نسبت به نوع پایگاه داده حفظ شود. ORM ارتباط های دایمی و احتمالا پیچیده با پایگاه داده را انجام می دهد و نیازی به انجام اعمال تکراری وکد نویسی هایی تکراری توسط برنامه نویس در هر بار ذخیره فیلد و رکورد جدید و بازیابی اطلاعات و...نیست.از طریق ارتباطی که بوسیله ORM بین اشیاء و پایگاه داده ایجاد می شود می توان اطلاعات اشیاء را با صدا زدن یک متد در پایگاه داده ی خود ذخیره کنید. این ساده سازی که توسط ORM فراهم می شود باعث میشودبا کدهای کمتری کارهایی نظیر بازیابی اطلاعات را انجام دهیم وبعدها اگه خواستیم تغییراتی اعمال کنیم به راحتی بتونیم بازسازی وتغییرش بدیم. ORM محدود به هیچ زبان خاصی نیست و تنها یک تکنیک و سیستم است که می تواند در زبانهای مختلف پیاده سازی شود . چند نوع ارتباط اولیه با دیتابیس داریم؟ 1-Database First:در این روش ابتدا دیتابیس طراحی و پیاده سازی می شود و بعد از آن انتیتی فریمورک به وسیله ی ویزارد، کلاس ها و موارد دیگر ارتباط با دیتابیس را می سازد. 2-Model First: در این روش ابتدا به وسیله ی کلاس دیاگرام، مدل برنامه طراحی می شود و انتیتی فریمورک با آن دیتابیس و کلاس ها و موارد دیگر را می سازد. 3- Code First: در این روش ابتدا کلاس ها و منطق ابتدایی برنامه نوشته میشود، سپس با انتیتی فریمورک این کلاس ها و آبجکت ها به صورت فیلد ها و رکورد های دیتابیس در میاورد. در این روش برنامه نویس فقط وظیفه ی کد نویسی را دارد و این ORM است که دیتابیس را ساخته و آن را مدیریت میکند. در انتیتی فریمورک فقط اتصال اولیه ی دیتابیس راه های مختلف دارد اما از اینجا به بعد، همه چیز یکسان است. مفاهیم پایه ای: انتیتی(Entity): انتیتی یک کلاس ساده است که پس از فرایند مایگریت به جدول های دیتابیس تبدیل می شود. همچنین این کلاس ها در ارتباط کد فرست با دیتابیس مارا یاری خواهند کرد. DbSet: یک کالکشن در حافظه که مقادیر دیتابیس را در خود دارد. با کوئری های Linq میتوانیم به آن دسترسی داشته باشیم و اعمال add(inset),Delete,Update,Select را در آن انجام دهیم. مایگریتشن(Migration): فرایندی که ORM انتیتی ها را به کد های ساخت و یا تغییرات دیتابیس تبدیل می کند. مایگریت(Migrate): اجرای دستورات مایگریشن و اعمال تغییرات و یا ساخت دیتابیس. در ادامه به صورت پروژه محور با انتیتی فریمورک کور (به صورت Code First) آشنا خواهیم شد.
  12. با سلام اواخر سال 95 نسخه ی نهایی ویژوال استودیو2017 عرضه شد که دارای باگ ها و مشکلات عجیب و غریبی بود. هنوز هم بعد از آمدن تعداد زیادی آپدیت کوچک، باز هم مشکلاتی دارد. در ادامه با چند مشکل بسیار پیش آمده در ویژوال استودیو را به همراه راه حل برسی خواهیم کرد. 1-نصب: مشکلات گرفتن پکیج به صورت آفلاین: وقتی که شما تلاش به گرفتن پکیج ویژوال استودیو به صورت آفلاین میکنید، ممکن است با مشکلاتی همراه شوید(پکیج کامل حدود 21-23 گیگ است). برای گرفتن پکیج آفلاین ویژوال استودیو پیشنهاد می شود از یک اینترنت پر سرعت به همراه VPN استفاده شود. 2-نصب: نصب پکیج آفلاین: امکان دارد که موقع نصب پکیج آفلاین با مشکلاتی روبرو شوید. این مشکلات معمولا به صورت Error آخر نصب نمایان می شوند و بدون Repair و Modify شما قادر به باز کردن ویژوال استودیو نخواهید بود. دلیل این مشکل میتواند کامل نبودن پکیج آفلاین یا آپدیت نبودن آن پکیچ باشد. پیشنهاد می شود هنگام نصب VPN و اینترنت پرسرعت داشته باشید تا پکیج های مشکل دار به صورت آنلاین نصب شوند. گرچه بعد از نصب با Modify و سپس Repair مشکلتان حل خواهد شد. 3-نصب: گیر کردن روی یک پکیج خاص: فی الواقع دلیل اصلی رخ دادن این مشکل را نمیدانم، ولی حدس میزنم عدم توانایی ویژوال استودیو در دپلوی کردن برخی پکیج ها دلیل این مشکل باشد. گزارش شده است که در برخی پکیج ها که به صورت استند الون نصب شده اند و یا از نصب نسخه ی قبلی ویژوال استودیو باقی مانده اند، در نصب به مشکل می خورند. لذا به پاک کردن آن پکیج ها اقدام کنید. در غیر این صورت حدود 6 ساعت صبر کنید تا مطمئن شوید که نصب جلوتر نمیرود. بعد از آن Task manager را باز کنید بخش Details دنبال آیتم VSinstaller باشید. روی آن کلیک راست کنید و Analyze waiting chain و پایین ترین گزینه در نمودار درختی را EndTask کنید. اگر چیزی پیدا نکردید، نصب ویژوال استودیو را لغو کنید. 4-نصب: عدم توانایی در لغو مراحل install: راه حل این است که Task manager را باز کنید بخش Details دنبال آیتم VSinstaller باشید. روی آن کلیک راست کنید و Analyze waiting chain و پایین ترین گزینه در نمودار درختی را EndTask کنید. اگر چیزی پیدا نکردید، کل پراسس VSinstaller را EndTask کنید. 5-نصب: عدم توانایی در گرفتن برخی پکیج ها: برخی پکیج ها مانند JDK, Android SDK,NDK و برخی دیگر از پکیج ها به دلیل تحریم در دسترس نیستند. لذا برای نصب آنها نیاز به VPN داریم. 6- بعد از نصب: عدم توانایی در باز کردن ویژوال استودیو: دلیل این مشکل؛ نصب ناقص پکیج های ویژوال استودیو است. این مشکل با Rapair و Modify درست می شود. 7-بعد از نصب: مشکلات اکتیویشن: اگر ویژوال استودیو از شما کد اکتیویشن میخواهد این ها را امتحان کنید Enterprise: NJVYC-BMHX2-G77MM-4XJMR-6Q8QF Professional: KBJFW-NXHK6-W4WJM-CRMQB-G3CDH 8-هنگ و کرش در پروژه های زامارین (و بقیه ی پروژه های Third Party): دلیل این هنگ و کرش این است که ویژوال استودیو فایل های مربوطه به این پروژه ها را پیدا نمیکند. لذا بعد از Reapir و Modify و گرفتن تمامی پکیچ ها و دیپندنسی های لازم، نیاز است از نصب صحیح پکیج ها(حاوی SDK ها Runtime ها و ...) اطمینان حاصل کنیم. مشکلی که برای شخص بنده به وجود آمده بود، Android SDK و NDK در پوشه ی مخصوصش نبود که با انتقال به آن پوشه مشکل برطرف شد. 9- هنگ در کار با دیزاینر : این مشکل یکی از اذیت کننده ترین باگ های ویژوال استودیو 2017 است. اما راه حل این است که کمی صبر کنید، اگر مشکل برطرف نشد Task manager را باز کنید بخش Details دنبال آیتم DevEnvباشید. روی آن کلیک راست کنید و Analyze waiting chain و پایین ترین گزینه در نمودار درختی را EndTask کنید. نکته این است که دیزاینر کرش کرده و بلا استفاده خواهد شد. پس نیاز است آن را reload کنیم. 10-اکسپشن در ویژوال استودیو در هنگام تغییر یک پراپرتی از نوع Thickness یا استایل و تمپلیت های پیچیده در زمل به صورت لایو: سعی کنید این کار را نکنید! ولی در صورت بروز این مشکل گاها زدن دکمه ی Continue میتواند مشکل را رفع کند. اما در اکثر موارد نرم افزار کرش می کند و شما نیاز دارید اپلیکیشن را دوباره بیلد بگیرید. 11-بروز مشکل استفاده از فایل pdb آفلاین(سیمبل) در .NET Native یا Mixed دیباگ: راه حل مشخصی برای این مشکل وجود ندارد، لذا سعی کنید سیمبل های دیباگ را به صورت آنلاین دریافت کنید. 12- مشکل در گرفتن پکیج از نوگت: ابتدا لینک نوگت را از تنظیمات نوگت چک کنید. یکی ازین دو سرور باید ست شده باشد(V3 پیشنهاد می شود) https://api.nuget.org/v3/index.json https://www.nuget.org/api/v2 اگر با تصحیح سرور ها باز هم مشکل پابرجا بود، با VPN امتحان کنید.(خاموش روشن کردن مودم فراموش نشه) اگر باز هم به مشکل خوردید، VPN را باز کنید، نرم افزار Fiddler را هم باز کنید، روی WinConfig کلیک کنید، سپس روی Exempt all کلیک کنید و در نهایت Save Changes با بزنید. مشکلتان برطرف خواهد شد. 13-مشکلات ایمولیتور (بیشتر مشکلات مربوط به اندروید است) در نصب نرم افزار و یا اتصال به اینترنت: این مشکل اغلب به دلیل بروز ایراد در HyperV Vethernet به وجود می آید که با دستکاری تنظیمات HyperV قابل حل است. در این تاپیک و این تاپیک در مورد این موضوع بحث شده و راه حل هایی ارائه شده است. 14-مشکلات و ارور های عجیب و غریب هنگام بیلد: گاها پیش می آید که با وجود این که کد صحیح نوشته شده، باز هم ارور میخوریم. برای حل این مشکل شما باید ویژوال استودیو را بسته و فایل های از قبل کامپایل شده را پاک کنید. در پروژه های سی شارپ این فایل ها در پوشه های Obj و Bin اند و در پروژه های C++ معمولا در داخل پوشه های Generated files, ARM,X64,X86 اند که شما باید نسبت به پاک کردنشان اقدام کنید.اگر موفق به حذف فایل ها نشدید(خطای فایل در حال استفاده و ...) گرفتید، دستگاه را ری استارت کنید. بعد از آن پروژه را Rebuild کنید. شما در ویژوال استودیو چه مشکلاتی دارید؟ زیر همین پست مشکلاتتان را با ما در میان بگذارید
  13. 1- بله میتونید روی ایمولیتور اندروید ویژوال استودیو بریزید، ولی متاسفانه گویا بعد از هر ریلانچ ایمولیتور؛ نیازه که دوباره نصب بشه. برای این مشکل پیشنهاد میشه که از یه ایمولیتور اندروید دیگه مثلا Remix OS استفاده بشه. 2و3-ایمولیتور نباید روی بحث اینترنت مشکل داشته باشه (امکانش هست روی دیپلویمنت اپ اندروید روی ایمولیتور اندروید به مشکل بخورید که براش راه حل هست) اگه ایرادی توی زمینه ی اتصال به اینترنت پیش بیاد، احتمال فراوان از HyperV Vethernet ها است. حتما اتصالات و تنظیماتش چک بشه.
  14. با سلام و آرزوی قبولی طاعات و عبادات، امروز قصد معرفی و آموزش couchbase NoSQL را داریم. در ابتدا سوال که مطرح می شود این است که اصلا دیتابیس NoSQL چیست، کجا استفاده می شود و چرا باید استفاده شود. نو اس کیو ال، یک نوع پایگاه داده ی غیر رابطه ای می باشد که داده ها اغلب به صورت Document هایی حاوی Key:Value ذخیره می شوند. NoSQL ها معمولا بسیار سریع اند، قابلیت ذخیره ی ترابایت ها داده را دارند، به دلیل رابطه ای نبودن بسیار انعطاف پذیر اند و به دلیل اسکیما فورس نبودن بسیار توسعه پذیر (scalable) هستند. نو اس کیو ال نوع جدید و متفاوتی از پایگاه داده می باشد و برای یادگیری صحیح آن نیاز است که کمی از تفکرات بسیار منطقی و اسکیما فورس SQL و رابطه ای دور شویم و به ذخیره ی Json Document ها فکر کنیم. (به شخصه زیاد شده برای کار های خاص آبجکت جیسون سریالایز شده رو ذخیره کنم) نکته ی مهم این است که NoSQLجایگزین برای دیتابیس های رابطه ای نیست! بلکه راه حلی است برای مشکلات، چالش ها و موارد خاص در حوضه ی ذخیره ی دیتا. couchbase چیست؟ کوچ بیس یک دیتابیس NoSQL اوپن سورس با امکانات عالی می باشد. من جمله ی این امکانات می توان به: پشتیبانی از اکثر سیستم عامل ها، زبان های برنامه نویسی و فریمورک های مطرح و پر استفاده، وجود یک زبان شبه SQL برای امر کوئری، سرعت بالا، امکانات مدیریتی ساده و اما غنی، راه حل های بسیار خوب برای multi node cluster و بسیاری دیگر. اما نکته ی بسیار جالب درمورد couchbase (که دلیل این که من رو به خودش جذب کرد، همین بود) پشتیبانی از دستگاه های موبایل(!!!) و وجود سینک گیت وی بود. couchbase server دیتابیس کوچ بیس برای سرور است که برای سیستم عامل های ویندوز، لینوکس و مک ارائه شده. مدیریت این دیتابیس از سه روش 1-کنسول مدیریتی 2-REST API و 3-SDK هایی که برای زبان های برنامه نویسی مختلف ارائه شده (من جمله سی شارپ دات نت) قابل انجام است. couchbase lite یک کتابخانه ی کوچ بیس برای دستگاه های موبایل است! که با آن میتوان داده ها را داخل دیتابیس NoSQL داخل موبایل ذخیره کرد (جایگزین برای SQLite). این کتابخانه از اندروید، آی او اس، ویندوز(وین 32) و زامارین پشتیبانی میکند. (خبر خوب) از نسخه ی 2.0 (که درحال توسعه است) پشتیبانی از ویندوز یونیورسال هم اضافه شده است. نسخه ی 2.0 نسبت به نسخه ی عرضه شده ی فعلی بهبود ها و تغییرات بسیار زیاد و بنیادینی را به خود دیده است. همچنین میتوان داده های آن را با کوچ بیس سرور و سینک گیت وی به وسیله ی ابزار داخل کتابخانه و یا REST API سینک کرد. couchbase sync-gateway یک ابزار تحت وب است که با آن میتوان داده های داخل دیتابیس را با دستگاه های دیگر سینک کرد.الگوریتم سینک بسیار پیاده سازی سختی دارد، اما سینک گیت وی تمام این کار های سخت را برایتان انجام خواهد داد. سینک گیت امکان وی مدیریت یوزر، مدیریت کانفلیکت، مدیریت سینک، آفلاین فرست\آنلاین فرست (ریل تایم) سینک، سینک از طریق REST API ، سینک تحت شبکه (P2P sync) و بسیاری دیگر را به شما خواهد داد. کوچ بیس لایت در عمل: در این_لینک میتوانید داکیومنت های بیشتری را در مورد پیاده سازی کوچ بیس پیدا کنید. گرچه در روز های آتی، درصورت درخواست، آموزشی های اختصاصی تهیه خواهد شد. موید باشید
  15. اس دی کا رو ازین_آدرس میتونی گیر بیاری. اما فکر کنم به پیش نمایش ویندوز رد استون 3 هم نیاز داشته باشی.