Forwarded from Mohammad Ebrahimi
https://mva.microsoft.com/
سایت آموزشی تکنولوژی های ماکروسافت و موارد مرتبط با برنامه نویسی، زیر نظر خود ماکروسافت
سایت جالبیه پیشنهاد میکنم ببینید
@IranAspMvc
سایت آموزشی تکنولوژی های ماکروسافت و موارد مرتبط با برنامه نویسی، زیر نظر خود ماکروسافت
سایت جالبیه پیشنهاد میکنم ببینید
@IranAspMvc
Docs
Training - Courses, Learning Paths, Modules
Develop practical skills through interactive modules and paths or register to learn from an instructor. Master core concepts at your speed and on your schedule.
چرا استفاده از Session در MVC مناسب نیست.
https://goo.gl/vYIx8D
—---------------------------
اگر چندین درخواست با یک Session ID به موتور پردازشی ASP.NET وارد شوند و حداقل یکی از آنها به صورت سشنی خواندنی+نوشتنی علامت گذاری شده باشد، اینگونه درخواستها serialized میشود. به این معنا که این نوع درخواستها در صف قرار داده شده و به ترتیب رسیدن، اجرا میشوند. این کار هم از این جهت لازم است که چندین درخواست یا به عبارتی چندین ترد همزمان، سبب انجام تغییرات ناخواستهای در مقادیر سشن مورد استفاده نشوند.
و اگر چندین درخواست با یک Session ID به موتور پردازشی ASP.NET وارد شوند و تمام آنها سشن «فقط خواندنی» باشند یا در آنها سشن «غیرفعال» شده باشد، این درخواستها به صورت موازی پردازش خواهند شد.
—---------------------------
یکی از بهترین جایگزین های session کوکی هست به شرط اونکه 2 مورد رو رعایت کنیم. (به دلایل امنیتی)
1-مقدار کوکی همیشه رمز نگاری شده باشه.
2-مقدار خاصیت HttpOnly برابر True باشه. با این وجود دیگه کوکی از طریق کلاینت قابل مشاهده یا تغییر نمیباشد. و فقط سمت سرور بهش دسترسی داریم. (یعنی با js دیگه به اون کوکی دسترسی نداریم)
—---------------------------
میتونین از دیتابیس های دیگری به جای SQLServer واسه ذخیره سشن ها استفاده کنین. مثلا دیتابیس های NoSQL. که واسه اینکار باید از Provier مخصوص اون دیتابیس استفاده کنین
که در لینک زیر لیست کاملی از اون ها رو مشاهده میکنید
https://www.nuget.org/packages?q=sessionstate
@IranAspMvc
https://goo.gl/vYIx8D
—---------------------------
اگر چندین درخواست با یک Session ID به موتور پردازشی ASP.NET وارد شوند و حداقل یکی از آنها به صورت سشنی خواندنی+نوشتنی علامت گذاری شده باشد، اینگونه درخواستها serialized میشود. به این معنا که این نوع درخواستها در صف قرار داده شده و به ترتیب رسیدن، اجرا میشوند. این کار هم از این جهت لازم است که چندین درخواست یا به عبارتی چندین ترد همزمان، سبب انجام تغییرات ناخواستهای در مقادیر سشن مورد استفاده نشوند.
و اگر چندین درخواست با یک Session ID به موتور پردازشی ASP.NET وارد شوند و تمام آنها سشن «فقط خواندنی» باشند یا در آنها سشن «غیرفعال» شده باشد، این درخواستها به صورت موازی پردازش خواهند شد.
—---------------------------
یکی از بهترین جایگزین های session کوکی هست به شرط اونکه 2 مورد رو رعایت کنیم. (به دلایل امنیتی)
1-مقدار کوکی همیشه رمز نگاری شده باشه.
2-مقدار خاصیت HttpOnly برابر True باشه. با این وجود دیگه کوکی از طریق کلاینت قابل مشاهده یا تغییر نمیباشد. و فقط سمت سرور بهش دسترسی داریم. (یعنی با js دیگه به اون کوکی دسترسی نداریم)
—---------------------------
میتونین از دیتابیس های دیگری به جای SQLServer واسه ذخیره سشن ها استفاده کنین. مثلا دیتابیس های NoSQL. که واسه اینکار باید از Provier مخصوص اون دیتابیس استفاده کنین
که در لینک زیر لیست کاملی از اون ها رو مشاهده میکنید
https://www.nuget.org/packages?q=sessionstate
@IranAspMvc
.NET Tips
اثر وجود سشن بر پردازش موازی در ASP.NET
در حین جستجوی مطلبی در فورومهای ASP.NET مطلبی رو از یکی از اعضای تیم ASP.NET دیدم که خلاصهاش به این شرح است:
اگر چندین درخواست با یک Session ID به موتور پردازشی ASP.NET وارد شوند و حداقل یکی از آنها به صورت سشنی خواندنی+نوشتنی علامت…
اگر چندین درخواست با یک Session ID به موتور پردازشی ASP.NET وارد شوند و حداقل یکی از آنها به صورت سشنی خواندنی+نوشتنی علامت…
#Reflector #Decompiler
واکشی و Decompile کردن های dll های دات نت
https://ilspy.net/
کد های دات نت بعد از کامپایل شدن به کد واسطی به نام
IL (Intermediate Language)
تبدیل میشود و در dll ها ذخیره میشوند.
برنامه سورس باز ILSpy میتواند dll های دات نت را Decompile کند و کد های آن را به هر دو زبان C# , VbNet تبدیل کند.
https://ilspy.net/images/screenshots/build199_decompilingtocsharp.png
@IranAspMvc
واکشی و Decompile کردن های dll های دات نت
https://ilspy.net/
کد های دات نت بعد از کامپایل شدن به کد واسطی به نام
IL (Intermediate Language)
تبدیل میشود و در dll ها ذخیره میشوند.
برنامه سورس باز ILSpy میتواند dll های دات نت را Decompile کند و کد های آن را به هر دو زبان C# , VbNet تبدیل کند.
https://ilspy.net/images/screenshots/build199_decompilingtocsharp.png
@IranAspMvc
DotNetZoom
#Reflector #Decompiler واکشی و Decompile کردن های dll های دات نت https://ilspy.net/ کد های دات نت بعد از کامپایل شدن به کد واسطی به نام IL (Intermediate Language) تبدیل میشود و در dll ها ذخیره میشوند. برنامه سورس باز ILSpy میتواند dll های دات نت را Decompile…
#Reflector #Decompiler
یکی از بهترین reflector های .NET(با قابلیت استخراج پروژه از رویdll)
https://www.jetbrains.com/decompiler/
@IranAspMvc
یکی از بهترین reflector های .NET(با قابلیت استخراج پروژه از رویdll)
https://www.jetbrains.com/decompiler/
@IranAspMvc
DotNetZoom
#Reflector #Decompiler واکشی و Decompile کردن های dll های دات نت https://ilspy.net/ کد های دات نت بعد از کامپایل شدن به کد واسطی به نام IL (Intermediate Language) تبدیل میشود و در dll ها ذخیره میشوند. برنامه سورس باز ILSpy میتواند dll های دات نت را Decompile…
#Reflector #Decompiler
یکی از بهترین reflector های .NET (با قابلیت استخراج پروژه از روی dll)
https://i1-win.softpedia-static.com/screenshots/JustDecompile_1.png
https://www.telerik.com/products/decompiler.aspx
@IranAspMvc
یکی از بهترین reflector های .NET (با قابلیت استخراج پروژه از روی dll)
https://i1-win.softpedia-static.com/screenshots/JustDecompile_1.png
https://www.telerik.com/products/decompiler.aspx
@IranAspMvc
Forwarded from طراحی و توسعه وب
🔴 آموزش پروژه محور #ES6
#Frontـend , #intermediate
—----------------------
✅جاوا اسکریپت در سال 2015 دوباره باز نویسی شد و یک سری تغیرات اساسی درش بوجود اومد.
این تغییرات خیلی از مشکلات رو حل کرد و یک سری بهبود ها رو به #Javascript اعمال کرد.
خیلی از فریم ورک های معروف در نسخه های جدیدی که منتشر کردن از EcmaScript 6 استفاده کرده اند.
حال آینده نزدیکی قرار است #ES7 هم منتشر شود! شما هم الان می توانید #ES6 رو با یک پروژه یاد بگیرید 😊
—---------------------
لینک آموزش ها : https://ccoenraets.github.io/es6-tutorial/index.html
لینک اسلاید معرفی : https://coenraets.org/present/es6/
—
پیشنهاد @webly اینه که هم خودتون ES6 رو یاد بگیرید هم اینکه لینک ها رو با دوستانتون به اشتراک بگذارید.😉
با احترام
#Frontـend , #intermediate
—----------------------
✅جاوا اسکریپت در سال 2015 دوباره باز نویسی شد و یک سری تغیرات اساسی درش بوجود اومد.
این تغییرات خیلی از مشکلات رو حل کرد و یک سری بهبود ها رو به #Javascript اعمال کرد.
خیلی از فریم ورک های معروف در نسخه های جدیدی که منتشر کردن از EcmaScript 6 استفاده کرده اند.
حال آینده نزدیکی قرار است #ES7 هم منتشر شود! شما هم الان می توانید #ES6 رو با یک پروژه یاد بگیرید 😊
—---------------------
لینک آموزش ها : https://ccoenraets.github.io/es6-tutorial/index.html
لینک اسلاید معرفی : https://coenraets.org/present/es6/
—
پیشنهاد @webly اینه که هم خودتون ES6 رو یاد بگیرید هم اینکه لینک ها رو با دوستانتون به اشتراک بگذارید.😉
با احترام
#Bootstrap #AspMvc
براحتی کد های Bootstrap رو در ASP NET MVC بنویسید
https://www.twitterbootstrapmvc.com/
@IranAspMvc
براحتی کد های Bootstrap رو در ASP NET MVC بنویسید
https://www.twitterbootstrapmvc.com/
@IranAspMvc
#AspMvc #Model
چه تفاوتی بین model (با m کوچک) و Model (با M بزرگ) در ویوها وجود دارد؟
پاسخ: model (با m کوچک)، معمولا در ابتدای ویو و برای تعریف نوع (strong type) که از کنترلر ارسال میشود، استفاده میگردد.
برای مثال، قطعه کد زیر عنوان میکند که نوع مدل تعریف شده (strong type)، از جنس Models.Product است:
@model Models.Product
و در واقع، منجر به تعریف متغیری به نام Model میشود و عملکردی شبیه به خط زیر خواهد داشت:
Models.Product Model;
که در این صورت، Model (با M بزرگ) یک نمونه (instance) از آن نوع تعریف شده است و میتوان همانند یک متغیر، در کل ویو به آن دسترسی داشت.
به طور خلاصه، Model یک متغیر است و model یک کلمه ی کلیدی است که نوع Model را مشخص میکند.
چه تفاوتی بین model (با m کوچک) و Model (با M بزرگ) در ویوها وجود دارد؟
پاسخ: model (با m کوچک)، معمولا در ابتدای ویو و برای تعریف نوع (strong type) که از کنترلر ارسال میشود، استفاده میگردد.
برای مثال، قطعه کد زیر عنوان میکند که نوع مدل تعریف شده (strong type)، از جنس Models.Product است:
@model Models.Product
و در واقع، منجر به تعریف متغیری به نام Model میشود و عملکردی شبیه به خط زیر خواهد داشت:
Models.Product Model;
که در این صورت، Model (با M بزرگ) یک نمونه (instance) از آن نوع تعریف شده است و میتوان همانند یک متغیر، در کل ویو به آن دسترسی داشت.
به طور خلاصه، Model یک متغیر است و model یک کلمه ی کلیدی است که نوع Model را مشخص میکند.
#AspMvc #HtmlHelper
Html Helper And Inline Helper In ASP NET MVC
همگی با مفهموم HtmlHelper آشنایی دارید. Extension Method هایی که برای سفارشی سازی تگ های Html به کار می ورد.
ولی چون در محیط سی شارپ کد نویسی میشه. نوشتن کد های html کمی سخت هست. ولی مزیتی که داره unit testable بودن و عدم وابستگی به view engine و از همه مهمتر اینه که میتونین پارامتر ورودی Expression بگیرید که این بهتون کمک میکنه بتونید html helper های مخصوص Property بنویسید به صورت
@Html.CustomHelperFor(p => p.MyProperty)
اطلاعات بیشتر :
https://goo.gl/UuygWZ
https://goo.gl/M4lNea
نوع دیگری از helper ها وجود دارد به نام Inline Helper که توسط اون ما می تونیم توی ویو و ... (کلا هر جا که Razor باشد) با سینتکس razor بنویسیم
مثال :
@helper CustomHelperFor()
{
<span>...</span>
}
مزیتی که این نوع helper ها داره اینه که چون در محیط razor هست. نوشتن کد های html راحت تر هست ولی مزایای HtmlHelper که در بالا نام بردیم رو نداره.
و عیب دیگر اینه که وقتی در یک ویو این helper رو تعریف کنیم در ویو ها و جا های دیگه پروژه بهش دسترسی نداریم.
حال برای رفع این مشکل باید inline helper مون رو داخل یک فایل cshtml مثلا (MyFileName.cshtml) بنویسیم و اون رو داخل پوشه App_Code قرار بدیم.
و اکنون با دستور زیر میتونیم اون helper رو صدا بزنیم
@MyFileName.NameOfInlineHelper()
اطلاعات بیشتر :
https://goo.gl/RA397B
@IranAspMvc
Html Helper And Inline Helper In ASP NET MVC
همگی با مفهموم HtmlHelper آشنایی دارید. Extension Method هایی که برای سفارشی سازی تگ های Html به کار می ورد.
ولی چون در محیط سی شارپ کد نویسی میشه. نوشتن کد های html کمی سخت هست. ولی مزیتی که داره unit testable بودن و عدم وابستگی به view engine و از همه مهمتر اینه که میتونین پارامتر ورودی Expression بگیرید که این بهتون کمک میکنه بتونید html helper های مخصوص Property بنویسید به صورت
@Html.CustomHelperFor(p => p.MyProperty)
اطلاعات بیشتر :
https://goo.gl/UuygWZ
https://goo.gl/M4lNea
نوع دیگری از helper ها وجود دارد به نام Inline Helper که توسط اون ما می تونیم توی ویو و ... (کلا هر جا که Razor باشد) با سینتکس razor بنویسیم
مثال :
@helper CustomHelperFor()
{
<span>...</span>
}
مزیتی که این نوع helper ها داره اینه که چون در محیط razor هست. نوشتن کد های html راحت تر هست ولی مزایای HtmlHelper که در بالا نام بردیم رو نداره.
و عیب دیگر اینه که وقتی در یک ویو این helper رو تعریف کنیم در ویو ها و جا های دیگه پروژه بهش دسترسی نداریم.
حال برای رفع این مشکل باید inline helper مون رو داخل یک فایل cshtml مثلا (MyFileName.cshtml) بنویسیم و اون رو داخل پوشه App_Code قرار بدیم.
و اکنون با دستور زیر میتونیم اون helper رو صدا بزنیم
@MyFileName.NameOfInlineHelper()
اطلاعات بیشتر :
https://goo.gl/RA397B
@IranAspMvc
Stackoverflow
Creating custom Html Helper: MyHelperFor
I would like to create a helper that can be used like
@Html.MyHelperFor(m => m.Name)
this should return for example
if it is @Html.
@Html.MyHelperFor(m => m.Name)
this should return for example
if it is @Html.
#AspMvc #HtmlHelper
https://keyurraval.com/blogimages/Asp_DotNet_MVC_Application_From_Scratch_12.png
تا حالا حتما براتون پیش امده که بخواین توی PartialView یا InlineHelper بخواین کد Script یا Css بنویسید.
چون به section های داخل layout دسترسی نداریم باید به صورت inline و در همان جا کد ها و فایل های css و js رو قرار بدیم.
مشکل اولش اینه که چون PartialView یی که داخلش کد جاواسکریپت نوشتین در لابلای صفحه استفاده شده، در نتیجه اسکریپت هاتون هم در لابلای صفحه Render میشه. و مثلا فایل jquery.js رو در پایین صفحه load کرده باشین و لابلای صفحه بخواین از توابع jquery استفاده کنین به مشکل بر میخورین و کار نمی ده.
زیرا (اگر View Source صفحه رو ببینید، متوجه میشید) که قبل از اینکه فایل jquery.js پایین صفحه load شده باشه، شما امدین و از توابع jquery استفاده کردین (قبل از load شدن کتابخانه jquery) پس کد هاتون خطا میده و اجرا نمیشه.
مشکل دومش اینه که چون کد های script و css اتون در لابلای صفحه render میشه دیگه اون تمیزی و یکپارچگی رو در کد های script اتون ندارید. و همچنین از best practice (فایل های جاوااسکرپت باید در پایین صفحه - قبل از پایان تگ body و فایل هایی css باید در بالای صفحه داخل تگ head قرار گیرد) از این مهم نیز محروم خواهیم شد.
در لینک زیر ترفندی رو یاد میگیرید که توسط اون یک متد مشابه RenderBody که در layout می نویسیم (به نام RenderScript) و از اون پس هر جای پروژه (view,helper,partialview,...) می توانیم کد های جاوااسکریپت خود را در محل مخصوص اون در layout بنویسیم
https://goo.gl/R4h3HH
@IranAspMvc
https://keyurraval.com/blogimages/Asp_DotNet_MVC_Application_From_Scratch_12.png
تا حالا حتما براتون پیش امده که بخواین توی PartialView یا InlineHelper بخواین کد Script یا Css بنویسید.
چون به section های داخل layout دسترسی نداریم باید به صورت inline و در همان جا کد ها و فایل های css و js رو قرار بدیم.
مشکل اولش اینه که چون PartialView یی که داخلش کد جاواسکریپت نوشتین در لابلای صفحه استفاده شده، در نتیجه اسکریپت هاتون هم در لابلای صفحه Render میشه. و مثلا فایل jquery.js رو در پایین صفحه load کرده باشین و لابلای صفحه بخواین از توابع jquery استفاده کنین به مشکل بر میخورین و کار نمی ده.
زیرا (اگر View Source صفحه رو ببینید، متوجه میشید) که قبل از اینکه فایل jquery.js پایین صفحه load شده باشه، شما امدین و از توابع jquery استفاده کردین (قبل از load شدن کتابخانه jquery) پس کد هاتون خطا میده و اجرا نمیشه.
مشکل دومش اینه که چون کد های script و css اتون در لابلای صفحه render میشه دیگه اون تمیزی و یکپارچگی رو در کد های script اتون ندارید. و همچنین از best practice (فایل های جاوااسکرپت باید در پایین صفحه - قبل از پایان تگ body و فایل هایی css باید در بالای صفحه داخل تگ head قرار گیرد) از این مهم نیز محروم خواهیم شد.
در لینک زیر ترفندی رو یاد میگیرید که توسط اون یک متد مشابه RenderBody که در layout می نویسیم (به نام RenderScript) و از اون پس هر جای پروژه (view,helper,partialview,...) می توانیم کد های جاوااسکریپت خود را در محل مخصوص اون در layout بنویسیم
https://goo.gl/R4h3HH
@IranAspMvc
#Component , #DLL , #Embedded , #WebResource
برای ساخت کامپوننت یا مجتمع کردن فایل های استاتیک (javascript, css , image , ...) داخل یک dll باید بتونیم اولا فایل هامون رو داخل resource (محل ذخیره سازی منابع در dll) اضافه کنیم و دوم اینکه بتونیم از این فایل های embed شده (جا سازی شده) داخل dll استفاده کنیم.
How To Emebed/Access To Javascript In .Net DLL
Managing Your JavaScript Library in ASP NET
Using embedded WebResources throughout WebResource.axd
برای ساخت کامپوننت یا مجتمع کردن فایل های استاتیک (javascript, css , image , ...) داخل یک dll باید بتونیم اولا فایل هامون رو داخل resource (محل ذخیره سازی منابع در dll) اضافه کنیم و دوم اینکه بتونیم از این فایل های embed شده (جا سازی شده) داخل dll استفاده کنیم.
How To Emebed/Access To Javascript In .Net DLL
Managing Your JavaScript Library in ASP NET
Using embedded WebResources throughout WebResource.axd
DotNetZoom
#Component , #DLL , #Embedded , #WebResource برای ساخت کامپوننت یا مجتمع کردن فایل های استاتیک (javascript, css , image , ...) داخل یک dll باید بتونیم اولا فایل هامون رو داخل resource (محل ذخیره سازی منابع در dll) اضافه کنیم و دوم اینکه بتونیم از این فایل…
embedded web resources.jpg
293.2 KB
#Optimize, #Comprss
برای استفاده از تصاویر در وب بهتره که همیشه اونها رو Optimize و فشرده سازی کنین
یکی از بهترین سایت های Image Optimizer
https://kraken.io/web-interface
و یکی از بهترین برنامه های مخصوص این کار
https://luci.criosweb.ro/riot/
این عمل تا حدود 70% از حجم فایل تصویری کم میکنه و افت کیفیت کمی رو به همراه داره
@IranAspMvc
برای استفاده از تصاویر در وب بهتره که همیشه اونها رو Optimize و فشرده سازی کنین
یکی از بهترین سایت های Image Optimizer
https://kraken.io/web-interface
و یکی از بهترین برنامه های مخصوص این کار
https://luci.criosweb.ro/riot/
این عمل تا حدود 70% از حجم فایل تصویری کم میکنه و افت کیفیت کمی رو به همراه داره
@IranAspMvc
Kraken.io
Free Online Image Optimizer and Compression Tool
Use Kraken.io Web Interface to optimize, compress, and resize images instantly in your browser. Free and PRO plans available for all image formats.
#GoogleMap , #GMaps , #Map
یکی از بهترین و کامل ترین کتابخانه ها جهت کار با GoogleMap
https://goo.gl/BnAC8h
قابلیت ها :
نقطه (Marker) گذاری روی نقشه
جستجو بر اساس نام مکان
طراحی Overlays روی نقشه : مسیر - محوطه
مسیریابی حرفه ای
نمای 360 درجه ایساده (Street View)
انواع نقشه ها : نقشه ماهواره ای - نقشه خیابانی
و ...
https://hpneo.github.io/gmaps/
@IranAspMvc
یکی از بهترین و کامل ترین کتابخانه ها جهت کار با GoogleMap
https://goo.gl/BnAC8h
قابلیت ها :
نقطه (Marker) گذاری روی نقشه
جستجو بر اساس نام مکان
طراحی Overlays روی نقشه : مسیر - محوطه
مسیریابی حرفه ای
نمای 360 درجه ایساده (Street View)
انواع نقشه ها : نقشه ماهواره ای - نقشه خیابانی
و ...
https://hpneo.github.io/gmaps/
@IranAspMvc
#DLL, #AspMvc, #Route
در پروژه های بزرگ و Enterprise برای جدا سازی و بخش بندی قسمت های مختلف پروژه معمولا کنترولر های پروژه رو در یک assembly جداگانه ایجاد میکنند.
برای اینکار باید ابتدا یک پروژه Class Library ایجاد کرده و تمام Controller هاتون رو به اونجا انتقال بدید (دقت داشته باشید که کلاس(Controller) ها باید از کلاس پایه System.Web.Mvc.Controller ارث بری کرده باشه)
سپس Reference این پروژه که خروجی آن یک DLL یا Assembly هست رو به پروژه Asp MVC خودتون اضافه کنید.
حالا فقط کافیه تنظیماتی رو توی RouteConfig پروژه انجام بدین تا پروژه Mvc بتواند کنترولر های پروژه دیگر را مدیریت کند.
کد آن در تصویر پست بعد میباشد
@IranAspMvc
در پروژه های بزرگ و Enterprise برای جدا سازی و بخش بندی قسمت های مختلف پروژه معمولا کنترولر های پروژه رو در یک assembly جداگانه ایجاد میکنند.
برای اینکار باید ابتدا یک پروژه Class Library ایجاد کرده و تمام Controller هاتون رو به اونجا انتقال بدید (دقت داشته باشید که کلاس(Controller) ها باید از کلاس پایه System.Web.Mvc.Controller ارث بری کرده باشه)
سپس Reference این پروژه که خروجی آن یک DLL یا Assembly هست رو به پروژه Asp MVC خودتون اضافه کنید.
حالا فقط کافیه تنظیماتی رو توی RouteConfig پروژه انجام بدین تا پروژه Mvc بتواند کنترولر های پروژه دیگر را مدیریت کند.
کد آن در تصویر پست بعد میباشد
@IranAspMvc
#EntityFramework #CodeFirst #EFCore
این روزها با نزدیک شدن به زمان انتشار نسخه های نهایی ASP .NET Core 1.0 و EF Core 1.0 و نیز با توجه به تغییرات بنیادی که در ساختار آنها شکل گرفته، ترسی از بابت عدم پشتیبانی از برخی ویژگی های نسخ قبلی، همانند ویژگی Database First در EF Core، در بین توسعه دهندگان ایجاد شده است. در ادامه به تشریح معنای واقعی Code First بودن EF Core و نیز نگرانی بی مورد برخی توسعه دهندگان خواهیم پرداخت.
در ابتدا باید بدانیم مفهوم CodeFirst بودن در EF Core چیست؟ آیا با توجه به عدم پشتیبانی از مدل Database First دیگر نمیتوان از یک دیتابیس موجود و آماده استفاده کرد؟ در پاسخ باید بگوییم خیر این طور نیست. این نسخه، مدل Database First را به مفهموم استفاده از فایل EDMX که یک مدل designer-based است پشتبانی نمیکند و این روش از طرف مایکروسافت منسوخ شده است، اما به هیچ وجه به این مفهوم نیست که نمیشود Database First کار کرد! شما در EF Core 1.0 میتوانید از طریق reverse-engineer، کلاس های POCO و DbContext و Mapping ها را برای دیتابیس خودایجاد کنید و در ادامه Code First کار کنید. حتی برای این منظور و راحتی کار توسعه دهندگان، ابزارهای زیادی به صورت Extension برای ویژوال استودیو در نظر گرفته شده است که از معروف ترین آنها میتوان به EF Power Tools و EntityFramework Reverse POCO Code First Generator اشاره کرد. شاید هم به همین خاطر است که به جای اصلاح Code First که کمی گیج کننده است، اصطلاح Code base یا Code only را برای آن مناسب تر دانسته اند.
مطالب تکمیلی در این باره را میتوانید از طریق لینک زیر، که توسط خانم Julie Lerman و بسیار ساده و روان نوشته شده، مطالعه بفرمایید.
https://msdn.microsoft.com/en-us/magazine/dn890367.aspx
این روزها با نزدیک شدن به زمان انتشار نسخه های نهایی ASP .NET Core 1.0 و EF Core 1.0 و نیز با توجه به تغییرات بنیادی که در ساختار آنها شکل گرفته، ترسی از بابت عدم پشتیبانی از برخی ویژگی های نسخ قبلی، همانند ویژگی Database First در EF Core، در بین توسعه دهندگان ایجاد شده است. در ادامه به تشریح معنای واقعی Code First بودن EF Core و نیز نگرانی بی مورد برخی توسعه دهندگان خواهیم پرداخت.
در ابتدا باید بدانیم مفهوم CodeFirst بودن در EF Core چیست؟ آیا با توجه به عدم پشتیبانی از مدل Database First دیگر نمیتوان از یک دیتابیس موجود و آماده استفاده کرد؟ در پاسخ باید بگوییم خیر این طور نیست. این نسخه، مدل Database First را به مفهموم استفاده از فایل EDMX که یک مدل designer-based است پشتبانی نمیکند و این روش از طرف مایکروسافت منسوخ شده است، اما به هیچ وجه به این مفهوم نیست که نمیشود Database First کار کرد! شما در EF Core 1.0 میتوانید از طریق reverse-engineer، کلاس های POCO و DbContext و Mapping ها را برای دیتابیس خودایجاد کنید و در ادامه Code First کار کنید. حتی برای این منظور و راحتی کار توسعه دهندگان، ابزارهای زیادی به صورت Extension برای ویژوال استودیو در نظر گرفته شده است که از معروف ترین آنها میتوان به EF Power Tools و EntityFramework Reverse POCO Code First Generator اشاره کرد. شاید هم به همین خاطر است که به جای اصلاح Code First که کمی گیج کننده است، اصطلاح Code base یا Code only را برای آن مناسب تر دانسته اند.
مطالب تکمیلی در این باره را میتوانید از طریق لینک زیر، که توسط خانم Julie Lerman و بسیار ساده و روان نوشته شده، مطالعه بفرمایید.
https://msdn.microsoft.com/en-us/magazine/dn890367.aspx