FaceBook Login از طریق OpenID در MVC3
How you shouldn’t implement base classes
public class Entity<T> { public T Id { get; protected set; } }
Motivation for such code it pretty clear: you have a base class that can be reused across multiple projects. For instance, if there is a web application with GUID Id columns in the database and a desktop app with integer Ids, it might seem a good idea to have the same class for both of them. In fact, this approach introduces accidental complexity because of premature generalization.
There is no need in using a single base entity class for more than one project or bounded context. Each domain has its unique path, so let it grow independently. Just copy and paste the base entity class to a new project and specify the exact type that will be used for the Id property.
معرفی NET 5 Preview 4.
.NET apps can now run natively on Windows ARM64. This follows the support we added for Linux ARM64 in .NET Core 3.0. With .NET 5.0, you can develop web and UI apps on Windows ARM64 devices, and deliver your applications to users who own Surface Pro X and similar devices. You can already run .NET Core and .NET Framework apps on Windows ARM64, but via x86 emulation. It’s workable, but native ARM64 execution has much better performance.
.NET 7 minimal API from scratch | FULL COURSE | clean architecture, repository pattern, CQRS MediatR
In this course I want to provide you a project structure and code organization to get you started with real .NET 7 minimal API projects. It's a full course on this topic where I start from creating and explaining the project structure, setting up different layers using EF Core, repository pattern, CQRS and MediatR. The biggest part of the video is however around the .NET 7 minimal API, taking you from the initial setup, explaining route handlers, implementing all CRUD operations and so on. Last but not least, this course walks you through the process of refactoring the .NET 7 minimal API so that it becomes readable, maintainable and scalable. At the end, you'll have a full project structure organized according to modern architectural patterns that you can take as a template for your own projects.
Contents
1. Intro: 00:00
2. Structuring the solution: 01:00
3. Coding the domain layer: 05:25
4. Coding the data access layer: 08:22
5. Creating repositories: 11:17
6. Adding migrations and database update: 22:30
7. CQRS with MediatR: 29:07
8. Route and rout handlers: 52:06
9. Dependency injection: 55:52
10. Implementing GET by ID : 57:40
11. Implementing POST route: 01:00:26
12. Implementing GET all route: 01:03:41
13. Implement PUT and DELETE: 01:04:57
14. Testing with Postman: 01:09:01
15. Is there a problem? 01:12:41
16. Refactoring service registrations: 01:15:49
17. Refactoring route registrations: 01:20:01
18. Automatic registration of endpoints: 01:26:28
19. Introducing route groups: 01:31:43
20. Extract lambdas into instance methods: 01:34:31
21: Model validation with endpoint filters: 01:45:58
22. Global exception handling: 01:55:10
23. Conclusions: 01:59:49
فعال سازی عملیات CRUD در Kendo UI Grid
using System.Linq; using System.Net; using System.Net.Http; using System.Web.Mvc; using Kendo.DynamicLinq; using KendoUI06Mvc.Models; using Newtonsoft.Json; namespace KendoUI06Mvc.Controllers { public class HomeController : Controller { public ActionResult Index() { return View(); // shows the page. } [HttpDelete] public ActionResult DeleteProduct(int id) { var item = ProductDataSource.LatestProducts.FirstOrDefault(x => x.Id == id); if (item == null) return new HttpNotFoundResult(); ProductDataSource.LatestProducts.Remove(item); return Json(item); } [HttpGet] public ActionResult GetProducts() { var request = JsonConvert.DeserializeObject<DataSourceRequest>( this.Request.Url.ParseQueryString().GetKey(0) ); var list = ProductDataSource.LatestProducts; return Json(list.AsQueryable() .ToDataSourceResult(request.Take, request.Skip, request.Sort, request.Filter), JsonRequestBehavior.AllowGet); } [HttpPost] public ActionResult PostProduct(Product product) { if (!ModelState.IsValid) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); var id = 1; var lastItem = ProductDataSource.LatestProducts.LastOrDefault(); if (lastItem != null) { id = lastItem.Id + 1; } product.Id = id; ProductDataSource.LatestProducts.Add(product); // گرید آی دی جدید را به این صورت دریافت میکند return Json(new DataSourceResult { Data = new[] { product } }); } [HttpPut] // Add it to fix this error: The requested resource does not support http method 'PUT' public ActionResult UpdateProduct(int id, Product product) { var item = ProductDataSource.LatestProducts .Select( (prod, index) => new { Item = prod, Index = index }) .FirstOrDefault(x => x.Item.Id == id); if (item == null) return new HttpNotFoundResult(); if (!ModelState.IsValid || id != product.Id) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); ProductDataSource.LatestProducts[item.Index] = product; //Return HttpStatusCode.OK return new HttpStatusCodeResult(HttpStatusCode.OK); } } }
var productsDataSource = new kendo.data.DataSource({ transport: { read: { url: "@Url.Action("GetProducts","Home")", dataType: "json", contentType: 'application/json; charset=utf-8', type: 'GET' }, create: { url: "@Url.Action("PostProduct","Home")", contentType: 'application/json; charset=utf-8', type: "POST" }, update: { url: function (product) { return "@Url.Action("UpdateProduct","Home")/" + product.Id; }, contentType: 'application/json; charset=utf-8', type: "PUT" }, destroy: { url: function (product) { return "@Url.Action("DeleteProduct","Home")/" + product.Id; }, contentType: 'application/json; charset=utf-8', type: "DELETE" }, parameterMap: function (options) { return kendo.stringify(options); } },
در این مخزن روشهای بهینه و توصیه شده جهت ساخت برنامههای تحت وب با استفاده از Net Core. در قالب 12 پروژه پیاده سازی شده است که منبع خوبی جهت الگو برداری است.
Boilerplate for ASP.NET Core reference application with Entity Framework Core, demonstrating a layered application architecture with DDD best practices. Implements NLayer Hexagonal architecture (Core, Application, Infrastructure and Presentation Layers) and Domain Driven Design (Entities, Repositories, Domain/Application Services, DTO's...) and aimed to be a Clean Architecture, with applying SOLID principles in order to use for a project template. Also implements best practices like loosely-coupled, dependency-inverted architecture and using design patterns such as Dependency Injection, logging, validation, exception handling, localization and so on.