WSL2 runs a real Linux kernel in Windows 10 and it's managing a virtual machine platform underneath (and not visible to) Hyper-V client tools, then why not just let WSL2 handle containers for us? That's exactly what the Docker Desklop WSL 2 Tech Preview aims to do.
اگر نگارشهای آغازین ابزارهای node.js را در ویندوز نصب کرده باشید، با نصب نگارش آخرین نگارش آن ... هیچ تغییری را مشاهده نخواهید کرد و عملا به روز رسانی نمیشود و هنوز با اجرای دستور npm -v، همان نگارش قبلی نمایش داده میشود. برای رفع این مشکل، ابتدا آخرین بستهی node.js را نصب کنید. سپس دستور npm -g i npm را صادر کنید؛ اگر باز هم به روز رسانی صورت نگرفت، از روش زیر استفاده نمائید:
Set-ExecutionPolicy Unrestricted -Scope CurrentUser -Force npm install -g npm-windows-upgrade npm-windows-upgrade --npm-version latest
یک کاربرد دیگر در رابطه با مثال آخر میتواند جنریت کردن یک فایل ویدئویی باشد؛ این مورد رو من همیشه بهش نیاز داشتم مثلاً موقع تست یک اندپوینت آپلود فایل ویدئویی:
docker run --rm -v $(pwd):$(pwd) -w $(pwd)\ jrottenberg/ffmpeg \ -f lavfi -i testsrc=size=1280x720 -t 60 -pix_fmt yuv420p testsrc.mp4
در اینجا توسط فیلتر testsrc یک فایل ویدئویی یک دقیقهایی (عدد ۶۰ مدت زمان ویدئو را تعیین میکند) با رزلوشن 1280x720 تولید خواهد شد:
باسلام و عرض ارادت
من به مشکل زیر برخورد کردم
و به شکل زیر پیاده سازی CheckArgumentIsNull را در ApplicationDbContext انجام دادم:
public interface IUnitOfWork : IDisposable { DbSet<TEntity> Set<TEntity>() where TEntity : class; int SaveChanges(bool acceptAllChangesOnSuccess); int SaveChanges(); Task<int> SaveChangesAsync(bool acceptAllChangesOnSuccess, CancellationToken cancellationToken = new CancellationToken()); Task<int> SaveChangesAsync(CancellationToken cancellationToken = new CancellationToken()); void CheckArgumentIsNull(string v); }
void CheckArgumentIsNull(string arg) { if (arg == null) throw new ArgumentNullException(nameof(arg)); }
آیا کاری که کردم درست است؟
یک نکتهی تکمیلی: بانک اطلاعاتی SQLite از نوع دادهی DateTimeOffset پشتیبانی نمیکند
SQLite به صورت توکار از هیچ نوع دادهای خاصی برای کار با زمان یا تاریخ پشتیبانی نمیکند؛ اما متدهایی را برای کار با آنها به همراه دارد و در این بین، EF Core فقط نوع دادهای DateTime را برای آن به خوبی پشتیبانی میکند. در سایر حالات استفادهی از DateTimeOffset، پیام عدم امکان ترجمهی این کوئری LINQ را به SQL، مشاهده خواهید کرد. به همین جهت برای کار بدون دردسر با زمان در SQLite و EF Core، بهتر است از همان DateTime استفاده کرد.
این روشها را نیز مدنظر داشته باشید:
- در این بانک اطلاعاتی برای مثال میتوان تاریخ را به صورت زیر ذخیره و بازیابی کرد:
((DateTimeOffset)value).Ticks.ToString()
- و یا میتوان برای آن تبدیلگر نوشت:
namespace MySQLite { public class SQLiteDbContext : DbContext { public SQLiteDbContext(DbContextOptions options) : base(options) { } protected override void OnModelCreating(ModelBuilder builder) { base.OnModelCreating(builder); addDateTimeOffsetConverter(builder); } private static void addDateTimeOffsetConverter(ModelBuilder builder) { // SQLite does not support DateTimeOffset foreach (var property in builder.Model.GetEntityTypes() .SelectMany(t => t.GetProperties()) .Where(p => p.ClrType == typeof(DateTimeOffset))) { property.SetValueConverter( new ValueConverter<DateTimeOffset, DateTime>( convertToProviderExpression: dateTimeOffset => dateTimeOffset.UtcDateTime, convertFromProviderExpression: dateTime => new DateTimeOffset(dateTime) )); } foreach (var property in builder.Model.GetEntityTypes() .SelectMany(t => t.GetProperties()) .Where(p => p.ClrType == typeof(DateTimeOffset?))) { property.SetValueConverter( new ValueConverter<DateTimeOffset?, DateTime>( convertToProviderExpression: dateTimeOffset => dateTimeOffset.Value.UtcDateTime, convertFromProviderExpression: dateTime => new DateTimeOffset(dateTime) )); } } } }
// یک نمونهی دیگر private static readonly ValueConverter<object, string> DateTimeOffsetToStringConverter = new ValueConverter<object, string>( v => ((DateTimeOffset)v).ToString(@"yyyy\-MM\-dd HH\:mm\:ss.FFFFFFFzzz", CultureInfo.InvariantCulture), v => DateTimeOffset.Parse(v, CultureInfo.InvariantCulture));
return Ok نوشته شده محدودیتی ندارد؛ چون در پشت صحنه از کتابخانهی Json.NET استفاده میکند و قادر هست با انواع و اقسام اشیاء پیچیده کار کند و آنها را serialize کند. جهت سادگی کار در اینجا از یک anonymous object استفاده شدهاست. آنرا با هر شیء دیگری و با هر ساختاری که علاقمندید تعویض کنید. هر نوع شیءایی را در اینجا میتوان ذکر و یا اضافه کرد:
public IHttpActionResult Get() { // Anonymous and Weakly-Typed Objects return Ok(new { Id = 1, Title = "Hello from My Protected Controller!", Username = this.User.Identity.Name, Property2 = new Object1 { id = 1, name = "V" } }); // OR ... Strongly-Typed Objects return Ok(model); }
اگر علاقمند بودید تا کار افزودن مهاجرتها، به همراه تولید خودکار نام فایل، بر اساس تاریخ و ساعت روز باشد، میتوان از دستورات ذیل در خط فرمان استفاده کرد (و یا درست کردن یک فایل bat. برای آن):
For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%c_%%a_%%b) For /f "tokens=1-2 delims=/:" %%a in ("%TIME: =0%") do (set mytime=%%a%%b) dotnet ef --configuration Release --startup-project ../ProjName/ migrations add V%mydate%_%mytime%
نظرات مطالب
پردازشهای Async در Entity framework 6
مثلا برای همچین کدی میشه از روش بالا استفاده کرد مشکل حل میشه ؟
{ for (int i = 1; i <=500; i++) { ThreadPool.QueueUserWorkItem(Execute, i + 1); } } void Execute(Object obj) { int thread = (int)obj; try { using (TestEntities ctx = new TestEntities()) { int i = 1; foreach (var v in ctx.Customers) { Thread.Sleep(i * 1000); i++; } } listBox1.Items.Add("Thread " + thread.ToString() + " End Success "); } catch (Exception e) { listBox1.Items.Add("Thread " + thread.ToString() + " Error :" + e.Message); } }
نظرات مطالب
یک نکته از ASP.NET 4.5 GridView
با سلام خدمت دوست عزیزم و تشکر از زحمت شما. سوالم این بود که واقعا این مورد در ورژنهای قبلی امکان پذیر نبوده؟!
مطالب
ویدیوهای آموزشی MVVM
یک سری ویدیوی رایگان آموزشی MVVM از مایکروسافت و همچنین شرکت Infragistics در دسترس هستند که جهت سهولت، لیست آنها را ادامه میتوانید مشاهده نمائید: