All Projects → urfnet → Urf.core

urfnet / Urf.core

Licence: mit
Unit of Work & Repositories Framework - .NET Core, NET Standard, Entity Framework Core. 100% extensible & lightweight. Live demo: https://goo.gl/QpJVgd

Projects that are alternatives of or similar to Urf.core

Furion
Make .NET development easier, more versatile, and more popular.
Stars: ✭ 902 (+299.12%)
Mutual labels:  webapi, dotnetcore, ioc, repository
Modular Monolith With Ddd
Full Modular Monolith application with Domain-Driven Design approach.
Stars: ✭ 6,210 (+2647.79%)
Mutual labels:  entity-framework-core, dotnetcore, architecture, design-patterns
Aspnetcore Ddd
Full ASP.NET Core 3.1 LTS application with DDD, CQRS and Event Sourcing
Stars: ✭ 88 (-61.06%)
Mutual labels:  webapi, ioc, repository
Dotnetlabs
.NET Labs -- Show Me the Tips and Tricks and Code
Stars: ✭ 135 (-40.27%)
Mutual labels:  webapi, entity-framework-core, dotnetcore
Dotnetcore
.NET 5 Nuget Packages.
Stars: ✭ 146 (-35.4%)
Mutual labels:  dotnetcore, ioc, repository
DotNETCarRental
Daily car rental simulation with ASP.NET.
Stars: ✭ 13 (-94.25%)
Mutual labels:  design-patterns, entity-framework-core, webapi
Clean Architecture Manga
🌀 Clean Architecture with .NET6, C#10 and React+Redux. Use cases as central organizing structure, completely testable, decoupled from frameworks
Stars: ✭ 3,104 (+1273.45%)
Mutual labels:  webapi, entity-framework-core, design-patterns
Urf.core.sample
URF.Core Sample Solution - E2E sample built with ASP.NET Core, Entity Framework Core, URF.Core, Angular, Kendo UI & OData Core. Live demo: https://goo.gl/QpJVgd
Stars: ✭ 40 (-82.3%)
Mutual labels:  entity-framework-core, design-patterns, repository
Urf.net
Unit of Work & Repositories Framework - .NET 4.x
Stars: ✭ 202 (-10.62%)
Mutual labels:  webapi, architecture, ioc
Android Readthefuckingsourcecode
😜 记录日常的开发技巧,开发中遇到的技术重点、难点,各个知识点的总结,优质面试题等等。持续更新...
Stars: ✭ 1,665 (+636.73%)
Mutual labels:  architecture, design-patterns
Puresharp
Puresharp is a Framework that provides the essential APIs (AOP, IOC, etc...) to productively build high quality (.NET 4.5.2+ & .NET Core 2.1+) applications through reliability, scalability and performance without no compromise
Stars: ✭ 120 (-46.9%)
Mutual labels:  architecture, ioc
Ios Design Patterns
Learning ground for iOS Design Pattern included with sample projects for MVC, MVP, MVVM, and VIPER
Stars: ✭ 120 (-46.9%)
Mutual labels:  architecture, design-patterns
Fanray
A blog built with ASP.NET Core
Stars: ✭ 117 (-48.23%)
Mutual labels:  entity-framework-core, architecture
Meta
tool for turning many repos into a meta repo. why choose many repos or a monolithic repo, when you can have both with a meta repo?
Stars: ✭ 1,376 (+508.85%)
Mutual labels:  productivity, repository
Dotnetcrawler
DotnetCrawler is a straightforward, lightweight web crawling/scrapying library for Entity Framework Core output based on dotnet core. This library designed like other strong crawler libraries like WebMagic and Scrapy but for enabling extandable your custom requirements. Medium link : https://medium.com/@mehmetozkaya/creating-custom-web-crawler-with-dotnet-core-using-entity-framework-core-ec8d23f0ca7c
Stars: ✭ 100 (-55.75%)
Mutual labels:  entity-framework-core, dotnetcore
Paper Code
对一些好的技术文章结合自己的实践经验进行翻译、举例说明等或自己的经验分享。主要包括架构设计、模式设计、模型设计、重构等。
Stars: ✭ 94 (-58.41%)
Mutual labels:  architecture, design-patterns
Vue.netcore
.NetCore+Vue2/Vue3+Element plus,前后端分离,不一样的快速开发框架;提供Vue2、Vue3版本,。http://www.volcore.xyz/
Stars: ✭ 2,338 (+934.51%)
Mutual labels:  dotnetcore, repository
Domain Driven Hexagon
Guide on Domain-Driven Design, software architecture, design patterns, best practices etc.
Stars: ✭ 4,417 (+1854.42%)
Mutual labels:  architecture, design-patterns
Python Clean Architecture
A Python toolkit for applications driven by The Clean Architecture
Stars: ✭ 159 (-29.65%)
Mutual labels:  architecture, design-patterns
Awesome Design Patterns
A curated list of software and architecture related design patterns.
Stars: ✭ 15,579 (+6793.36%)
Mutual labels:  architecture, design-patterns

URF.Core    Build Status NuGet Badge

Unit-of-Work & Repository Framework | Official URF, Trackable Entities & Design Factory Team

Build history

Docs: URF.Core.Sample | Subscribe URF Updates: @lelong37 | NuGet: goo.gl/WEn7Jm

Sample & Live Demo w/ Source Code: URF.Core.Sample (Demo Site is down due to heavy traffic and Azure costs.)

URF.Core RTM is Complete!

URF.Core is feature complete and now has full parity with URF.NET (legacy .NET). URF.Core has gone through a complete rewrite with laser focus on Architecture, Design and Implementation as well as implementing top request for vNext, you can take a look at our URF.Core.Sample w/ ASP.NET Core Web API, OData, with full CRUD samples with Angular and Kendo UI.

Supported Added for MongoDb

As of version 3.1.1, support has been added for NoSQL Document databases with an implementation for MongoDb.

Samples for EF Core 3.x and MongoDb

Samples have been provided for EF Core 3.x and MongoDb.

Lightweight, Nano-Footprint

Staying faithful to (legacy) URF.NET of having a small footprint. URF.Core URF.Core (7 total classes) vs. URF.NET (12 total classes).

100% Extensible

We've made every implementation virtual therefore overridable for whatever teams/projects/developer use-cases as well as edge-cases.

IQuerable vs. IEnumerable

As as always, this is a religious debate between teams and the within the community. As with (legacy) URF.NET, we gave teams the option to opt into IQueryable or IEnumerable, and even both depending on your teams Architecture, Design & Implementation and style. As URF.NET and for teams that feel Repository Patterns that expose IQueryable as a leaky abstraction, simple use URF's IQuery API, which will give you all the Fluent features of IQueryable, however will return pure Entity or IEnumerable vs. using IQueryable, again URF.Core & URF.NET both support, so teams have the total freedom to choose which of the 3 paths/options makes most sense for their team/project.

URF.Core sample and usage in ASP.NET Core Web API & OData

public class ProductsController : ODataController
{
    private readonly IProductService _productService;
    private readonly IUnitOfWork _unitOfWork;

    public ProductsController(
        IProductService productService,
        IUnitOfWork unitOfWork)
    {
        _productService = productService;
        _unitOfWork = unitOfWork;
    }

    // e.g. GET odata/Products?$skip=2&$top=10
    [EnableQuery]
    public IQueryable<Products> Get() => _productService.Queryable();

    // e.g.  GET odata/Products(37)
    public async Task<IActionResult> Get([FromODataUri] int key)
    {
        if (!ModelState.IsValid)
            return BadRequest(ModelState);

        var product = await _productService.FindAsync(key);

        if (product == null)
            return NotFound();

        return Ok(product);
    }

    // e.g. PUT odata/Products(37)
    public async Task<IActionResult> Put([FromODataUri] int key, [FromBody] Products products)
    {
        if (!ModelState.IsValid)
            return BadRequest(ModelState);

        if (key != products.ProductId)
            return BadRequest();

        _productService.Update(products);

        try
        {
            await _unitOfWork.SaveChangesAsync();
        }
        catch (DbUpdateConcurrencyException)
        {
            if (!await _productService.ExistsAsync(key))
                return NotFound();
            throw;
        }

        return NoContent();
    }

    // e.g. PUT odata/Products
    public async Task<IActionResult> Post([FromBody] Products products)
    {
        if (!ModelState.IsValid)
            return BadRequest(ModelState);

        _productService.Insert(products);
        await _unitOfWork.SaveChangesAsync();

        return Created(products);
    }

    // e.g. PATCH, MERGE odata/Products(37)
    [AcceptVerbs("PATCH", "MERGE")]
    public async Task<IActionResult> Patch([FromODataUri] int key, [FromBody] Delta<Products> product)
    {
        if (!ModelState.IsValid)
            return BadRequest(ModelState);

        var entity = await _productService.FindAsync(key);
        if (entity == null)
            return NotFound();

        product.Patch(entity);
        _productService.Update(entity);

        try
        {
            await _unitOfWork.SaveChangesAsync();
        }
        catch (DbUpdateConcurrencyException)
        {
            if (!await _productService.ExistsAsync(key))
                return NotFound();
            throw;
        }
        return Updated(entity);
    }

    // e.g. DELETE odata/Products(37)
    public async Task<IActionResult> Delete([FromODataUri] int key)
    {
        if (!ModelState.IsValid)
            return BadRequest(ModelState);

        var result = await _productService.DeleteAsync(key);

        if (!result)
            return NotFound();

        await _unitOfWork.SaveChangesAsync();

        return StatusCode((int) HttpStatusCode.NoContent);
    }
}

Performance

URF.Core has been completely re-written, and everything is now completely task, async, await right out of the box. This way, teams will automatically get the best thread management out on asynchronous perf improvements.

URF Powered & Sponsered by:

© 2017 URF.NET All rights reserved.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].