Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
ef840f6
Initial plan
Copilot Feb 14, 2026
8468dc5
Add support for block-bodied methods with common statements
Copilot Feb 14, 2026
f68c572
Add functional tests and documentation for block-bodied methods
Copilot Feb 14, 2026
7067bc2
Add support for if-without-else and switch statements
Copilot Feb 14, 2026
75c638e
Address code review feedback
Copilot Feb 14, 2026
7a70fde
Merge branch 'master' into copilot/support-classic-methods-transforma…
Feb 15, 2026
06627c2
Remove unused code and add support for multiple early returns
Feb 15, 2026
9add2c9
Missing verify files
Feb 15, 2026
3c91bf9
Update docs
Feb 15, 2026
e2b1fad
Address code review feedback - fix semantics and scoping issues
Copilot Feb 15, 2026
f7f296b
Improve switch expression support and improve variable handling
Feb 15, 2026
3b56faa
Remove redundant code and add test for projectables in block bodied m…
Feb 15, 2026
ff4feb1
Fix new case
Feb 15, 2026
7ba8a84
Fix local variable replacement in conditions and switch expressions
Copilot Feb 16, 2026
b8af892
Improve error reporting for side effects in block-bodied methods
Copilot Feb 16, 2026
b697cd2
Add documentation for side effect detection
Copilot Feb 16, 2026
f2a805e
Initial exploration - understand pattern matching crash issue
Copilot Feb 16, 2026
31f4267
Fix pattern matching support in block-bodied methods
Copilot Feb 16, 2026
adc95f5
Add documentation for pattern matching support
Copilot Feb 16, 2026
5f83f40
Revert pattern matching commits to separate feature
Copilot Feb 16, 2026
8b144b5
Address code review suggestions and update documentation
Copilot Feb 16, 2026
2b70d43
Update block bodied release number
Feb 16, 2026
b4989af
Reveret change about if with single return
Feb 16, 2026
a741a27
Mark this new feature as experimental and allow explicit getters for …
Feb 18, 2026
3788729
Fix block bodied properties
Feb 18, 2026
f2d0ec8
Simplify code and add xmldocs
Feb 18, 2026
9b7e61a
Handle code review suggestions and fix an operator precedence issue w…
Feb 18, 2026
37c1bb9
Add comprehensive docs
Feb 21, 2026
0ac1c2a
Improve formatting
Feb 21, 2026
f4d56d8
Add GitHub Actions workflow for deploying documentation to GitHub Pages
Feb 21, 2026
cf37a4a
Fix branch name
Feb 21, 2026
74c580c
Merge branch 'master' into feature/docs
Mar 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 68 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
name: Deploy Docs to GitHub Pages

on:
push:
branches:
- master
paths:
- 'docs/**'
- '.github/workflows/docs.yml'
workflow_dispatch:

# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write

# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: pages
cancel-in-progress: false

jobs:
build:
name: Build VitePress site
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0 # Needed for lastUpdated feature

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 22
cache: npm
cache-dependency-path: docs/package-lock.json

- name: Setup Pages
uses: actions/configure-pages@v5

- name: Install dependencies
working-directory: docs
run: npm ci

- name: Build VitePress site
working-directory: docs
run: npm run build

- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: docs/.vitepress/dist

deploy:
name: Deploy to GitHub Pages
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
needs: build
runs-on: ubuntu-latest
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4

4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -366,3 +366,7 @@ FodyWeavers.xsd
*.received.*

.idea

# Docs
/docs/.vitepress/cache/
/docs/.vitepress/dist/
298 changes: 40 additions & 258 deletions README.md

Large diffs are not rendered by default.

93 changes: 93 additions & 0 deletions docs/.vitepress/config.mts
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
import { defineConfig } from 'vitepress'

// https://vitepress.dev/reference/site-config
export default defineConfig({
title: "EF Core Projectables",
description: "Flexible projection magic for EF Core — use properties and methods directly in your LINQ queries",
head: [
['link', { rel: 'icon', type: 'image/svg+xml', href: '/logo.svg' }],
['meta', { property: 'og:image', content: 'https://projectables.github.io/social.svg' }],
['meta', { property: 'og:type', content: 'website' }],
['meta', { name: 'twitter:card', content: 'summary_large_image' }],
['meta', { name: 'twitter:image', content: 'https://projectables.github.io/social.svg' }],
],
themeConfig: {
logo: '/logo.svg',
nav: [
{ text: 'Home', link: '/' },
{ text: 'Guide', link: '/guide/introduction' },
{ text: 'Reference', link: '/reference/projectable-attribute' },
{ text: 'Advanced', link: '/advanced/how-it-works' },
{ text: 'Recipes', link: '/recipes/computed-properties' },
],

sidebar: {
'/guide/': [
{
text: 'Getting Started',
items: [
{ text: 'Introduction', link: '/guide/introduction' },
{ text: 'Installation', link: '/guide/installation' },
{ text: 'Quick Start', link: '/guide/quickstart' },
]
},
{
text: 'Core Concepts',
items: [
{ text: 'Projectable Properties', link: '/guide/projectable-properties' },
{ text: 'Projectable Methods', link: '/guide/projectable-methods' },
{ text: 'Extension Methods', link: '/guide/extension-methods' },
]
}
],
'/reference/': [
{
text: 'Reference',
items: [
{ text: '[Projectable] Attribute', link: '/reference/projectable-attribute' },
{ text: 'Compatibility Mode', link: '/reference/compatibility-mode' },
{ text: 'Null-Conditional Rewrite', link: '/reference/null-conditional-rewrite' },
{ text: 'Expand Enum Methods', link: '/reference/expand-enum-methods' },
{ text: 'Use Member Body', link: '/reference/use-member-body' },
{ text: 'Diagnostics', link: '/reference/diagnostics' },
]
}
],
'/advanced/': [
{
text: 'Advanced',
items: [
{ text: 'How It Works', link: '/advanced/how-it-works' },
{ text: 'Query Compiler Pipeline', link: '/advanced/query-compiler-pipeline' },
{ text: 'Block-Bodied Members', link: '/advanced/block-bodied-members' },
{ text: 'Limitations', link: '/advanced/limitations' },
]
}
],
'/recipes/': [
{
text: 'Recipes',
items: [
{ text: 'Computed Entity Properties', link: '/recipes/computed-properties' },
{ text: 'Enum Display Names', link: '/recipes/enum-display-names' },
{ text: 'Nullable Navigation Properties', link: '/recipes/nullable-navigation' },
{ text: 'Reusable Query Filters', link: '/recipes/reusable-query-filters' },
]
}
],
},

socialLinks: [
{ icon: 'github', link: 'https://github.com/koenbeuk/EntityFrameworkCore.Projectables' }
],

search: {
provider: 'local'
},

footer: {
message: 'Released under the MIT License.',
copyright: 'Copyright © EntityFrameworkCore.Projectables Contributors'
}
}
})
Loading