Provider-agnostic extension methods for the Facet library, enabling one-line mapping between your domain entities and generated facet types.
- Constructor-based mapping
(ToFacet<TSource,TTarget>)for any object graph - Enumerable mapping
(SelectFacets<TSource,TTarget>)via LINQ - IQueryable projection
(SelectFacet<TSource,TTarget>)using the generated Projection expression
All methods are zero-boilerplate and leverage your already generated ctor or Projection property.
dotnet add package Facetdotnet add package Facet.ExtensionsNote: For EF Core async methods, see Facet.Extensions.EFCore.
using Facet; // for [Facet] and generated types
using Facet.Extensions; // for mapping extension methodsusing Facet;
// emits ctor + Projection by default
[Facet(typeof(Person))]
public partial class PersonDto { }// Single-object mapping
var dto = person.ToFacet<Person, PersonDto>();
// Enumerable mapping (in-memory)
var dtos = people.SelectFacets<Person, PersonDto>().ToList();
// IQueryable projection (deferred)
var query = dbContext.People.SelectFacet<Person, PersonDto>();
var list = query.ToList();| Method | Description |
|---|---|
ToFacet<TSource,TTarget>() |
Map one instance via generated constructor |
SelectFacets<TSource,TTarget>() |
Map an IEnumerable<TSource> via constructor |
SelectFacet<TSource,TTarget>() |
Project IQueryable<TSource> to IQueryable<TTarget> |
- Facet v1.6.0+
- .NET Standard 2.0+ (sync methods)
For EF Core async support, see Facet.Extensions.EFCore.