Showing preview only (766K chars total). Download the full file or copy to clipboard to get everything.
Repository: BlueshiftSoftware/EntityFrameworkCore
Branch: develop
Commit: 69cfc1c3772f
Files: 200
Total size: 700.6 KB
Directory structure:
gitextract_yaxh7ovu/
├── .dockerignore
├── .gitattributes
├── .gitignore
├── .travis.yml
├── Blueshift.EntityFrameworkCore.sln
├── Blueshift.EntityFrameworkCore.sln.DotSettings
├── Directory.Build.props
├── Directory.Build.targets
├── LICENSE.txt
├── NuGet.config
├── README.md
├── appveyor.yml
├── build/
│ ├── dependencies.props
│ ├── repo.beforecommon.props
│ ├── repo.props
│ ├── repo.targets
│ └── sources.props
├── build.cmd
├── build.sh
├── docker-compose.dcproj
├── docker-compose.yml
├── korebuild-lock.txt
├── korebuild.json
├── run.cmd
├── run.ps1
├── run.sh
├── src/
│ ├── Blueshift.EntityFrameworkCore.MongoDB/
│ │ ├── Adapter/
│ │ │ ├── Conventions/
│ │ │ │ ├── AbstractBaseClassConvention.cs
│ │ │ │ ├── BsonClassMapAttributeConvention.cs
│ │ │ │ ├── BsonMemberMapAttributeConvention.cs
│ │ │ │ ├── IgnoreEmptyEnumerablesConvention.cs
│ │ │ │ ├── IgnoreNullOrEmptyStringsConvention.cs
│ │ │ │ ├── KeyAttributeConvention.cs
│ │ │ │ ├── NavigationSrializationMemberMapConvention.cs
│ │ │ │ └── NotMappedAttributeConvention.cs
│ │ │ ├── EntityFrameworkConventionPack.cs
│ │ │ ├── Serialization/
│ │ │ │ ├── BsonSerializerExtensions.cs
│ │ │ │ ├── DenormalizingBsonClassMapSerializer.cs
│ │ │ │ └── NavigationBsonMemberMapSerializer.cs
│ │ │ └── Update/
│ │ │ ├── DeleteOneModelFactory.cs
│ │ │ ├── IMongoDbWriteModelFactory.cs
│ │ │ ├── IMongoDbWriteModelFactoryCache.cs
│ │ │ ├── IMongoDbWriteModelFactorySelector.cs
│ │ │ ├── InsertOneModelFactory.cs
│ │ │ ├── MongoDbWriteModelFactory.cs
│ │ │ ├── MongoDbWriteModelFactoryCache.cs
│ │ │ ├── MongoDbWriteModelFactorySelector.cs
│ │ │ └── ReplaceOneModelFactory.cs
│ │ ├── Annotations/
│ │ │ ├── DenormalizeAttribute.cs
│ │ │ ├── MongoCollectionAttribute.cs
│ │ │ └── MongoDatabaseAttribute.cs
│ │ ├── Blueshift.EntityFrameworkCore.MongoDB.csproj
│ │ ├── ChangeTracking/
│ │ │ └── MongoDbInternalEntityEntryFactory.cs
│ │ ├── DbContextOptionsExtensions.cs
│ │ ├── DependencyInjection/
│ │ │ └── MongoDbEfServiceCollectionExtensions.cs
│ │ ├── Infrastructure/
│ │ │ ├── EntityFrameworkMongoDbServicesBuilder.cs
│ │ │ ├── MongoDbContextOptionsBuilder.cs
│ │ │ ├── MongoDbContextOptionsBuilderExtensions.cs
│ │ │ ├── MongoDbModelValidator.cs
│ │ │ └── MongoDbOptionsExtension.cs
│ │ ├── ListExtensions.cs
│ │ ├── Metadata/
│ │ │ ├── Builders/
│ │ │ │ ├── DocumentDbInternalMetadataBuilderExtensions.cs
│ │ │ │ ├── DocumentEntityTypeBuilderExtensions.cs
│ │ │ │ ├── DocumentInternalKeyBuilderExtensions.cs
│ │ │ │ ├── MongoDbConventionSetBuilder.cs
│ │ │ │ ├── MongoDbConventionSetBuilderDependencies.cs
│ │ │ │ ├── MongoDbEntityTypeBuilderExtensions.cs
│ │ │ │ ├── MongoDbInternalMetadataBuilderExtensions.cs
│ │ │ │ └── MongoDbModelBuilderExtensions.cs
│ │ │ ├── Conventions/
│ │ │ │ ├── BsonDiscriminatorAttributeConvention.cs
│ │ │ │ ├── BsonIgnoreAttributeConvention.cs
│ │ │ │ ├── BsonKnownTypesAttributeConvention.cs
│ │ │ │ ├── BsonRequiredAttributeConvention.cs
│ │ │ │ ├── DocumentPropertyMappingValidationConvention.cs
│ │ │ │ ├── MongoCollectionAttributeConvention.cs
│ │ │ │ ├── MongoDatabaseConvention.cs
│ │ │ │ ├── MongoDbDatabaseGeneratedAttributeConvention.cs
│ │ │ │ ├── MongoDbKeyAttributeConvention.cs
│ │ │ │ ├── MongoDbRelationshipDiscoveryConvention.cs
│ │ │ │ └── OwnedDocumentConvention.cs
│ │ │ ├── DocumentAnnotationNames.cs
│ │ │ ├── DocumentAnnotations.cs
│ │ │ ├── DocumentEntityTypeAnnotations.cs
│ │ │ ├── DocumentKeyAnnotations.cs
│ │ │ ├── MongoDbAnnotationNames.cs
│ │ │ ├── MongoDbEntityTypeAnnotations.cs
│ │ │ └── MongoDbModelAnnotations.cs
│ │ ├── MethodHelper.cs
│ │ ├── MongoDbUtilities.cs
│ │ ├── ObjectIdTypeConverter.cs
│ │ ├── Properties/
│ │ │ ├── AssemblyInfo.cs
│ │ │ ├── Blueshift.EntityFrameworkCore.MongoDB.rd.xml
│ │ │ ├── DocumentDbStrings.Designer.cs
│ │ │ ├── DocumentDbStrings.cs
│ │ │ ├── DocumentDbStrings.resx
│ │ │ └── DocumentDbStrings.tt
│ │ ├── Query/
│ │ │ ├── EntityLoadInfoFactory.cs
│ │ │ ├── ExpressionVisitors/
│ │ │ │ ├── DocumentNavigationRewritingExpressionVisitor.cs
│ │ │ │ ├── DocumentNavigationRewritingExpressionVisitorFactory.cs
│ │ │ │ ├── IMongoDbDenormalizedCollectionCompensatingVisitorFactory.cs
│ │ │ │ ├── MongoDbDenormalizedCollectionCompensatingVisitor.cs
│ │ │ │ ├── MongoDbDenormalizedCollectionCompensatingVisitorFactory.cs
│ │ │ │ ├── MongoDbEntityQueryableExpressionVisitor.cs
│ │ │ │ ├── MongoDbEntityQueryableExpressionVisitorFactory.cs
│ │ │ │ ├── MongoDbMemberAccessBindingExpressionVisitor.cs
│ │ │ │ └── MongoDbMemberAccessBindingExpressionVisitorFactory.cs
│ │ │ ├── Expressions/
│ │ │ │ ├── DocumentQueryExpression.cs
│ │ │ │ ├── IDocumentQueryExpressionFactory.cs
│ │ │ │ └── MongoDbDocumentQueryExpressionFactory.cs
│ │ │ ├── IEntityLoadInfoFactory.cs
│ │ │ ├── IValueBufferFactory.cs
│ │ │ ├── LinqQueryCompilationContextFactory.cs
│ │ │ ├── MongoDbEntityQueryModelVisitor.cs
│ │ │ ├── MongoDbEntityQueryModelVisitorDependencies.cs
│ │ │ ├── MongoDbEntityQueryModelVisitorFactory.cs
│ │ │ ├── MongoDbQueryBuffer.cs
│ │ │ ├── MongoDbQueryContext.cs
│ │ │ ├── MongoDbQueryContextFactory.cs
│ │ │ ├── QueryableLinqOperatorProvider.cs
│ │ │ └── ValueBufferFactory.cs
│ │ ├── Storage/
│ │ │ ├── IMongoDbConnection.cs
│ │ │ ├── IMongoDbTypeMappingSource.cs
│ │ │ ├── MongoDbConnection.cs
│ │ │ ├── MongoDbDatabase.cs
│ │ │ ├── MongoDbDatabaseCreator.cs
│ │ │ └── MongoDbTypeMappingSource.cs
│ │ └── ValueGeneration/
│ │ ├── HashCodeValueGenerator.cs
│ │ ├── IntegerValueGenerator.cs
│ │ ├── MongoDbValueGeneratorSelector.cs
│ │ └── ObjectIdValueGenerator.cs
│ ├── Blueshift.EntityFrameworkCore.MongoDB.SampleDomain/
│ │ ├── Blueshift.EntityFrameworkCore.MongoDB.SampleDomain.csproj
│ │ ├── ZooDbContext.cs
│ │ ├── ZooDbDependencyInjection.cs
│ │ ├── ZooEntityFixture.cs
│ │ └── _Comparers.cs
│ ├── Blueshift.Identity.MongoDB/
│ │ ├── Blueshift.Identity.MongoDB.csproj
│ │ ├── DependencyInjection/
│ │ │ └── IdentityEntityFrameworkMongoDbBuilderExtensions.cs
│ │ ├── IdentityMongoDbContext.cs
│ │ ├── MongoDbIdentityClaim.cs
│ │ ├── MongoDbIdentityRole.cs
│ │ ├── MongoDbIdentityUser.cs
│ │ ├── MongoDbIdentityUserLogin.cs
│ │ ├── MongoDbIdentityUserRole.cs
│ │ ├── MongoDbIdentityUserToken.cs
│ │ ├── MongoDbRoleStore.cs
│ │ └── MongoDbUserStore.cs
│ ├── Directory.Build.props
│ └── Shared/
│ ├── Check.cs
│ ├── CodeAnnotations.cs
│ ├── MemberInfoExtensions.cs
│ ├── PropertyInfoExtensions.cs
│ ├── SharedTypeExtensions.cs
│ └── StringBuilderExtensions.cs
├── test/
│ ├── Blueshift.EntityFrameworkCore.MongoDB.Tests/
│ │ ├── Adapter/
│ │ │ ├── Conventions/
│ │ │ │ ├── AbstractClassConventionTest.cs
│ │ │ │ ├── IgnoreEmptyEnumerablesConventionTests.cs
│ │ │ │ ├── IgnoreNullOrEmptyStringsConventionTests.cs
│ │ │ │ └── KeyAttributeConventionTests.cs
│ │ │ ├── EntityFrameworkConventionPackTests.cs
│ │ │ ├── Serialization/
│ │ │ │ ├── BsonSerializerExtensionsTests.cs
│ │ │ │ └── DenormalizingBsonClassMapSerializerTests.cs
│ │ │ └── Update/
│ │ │ └── MongoDbWriteModelFactoryTests.cs
│ │ ├── ApiConsistencyTest.cs
│ │ ├── Blueshift.EntityFrameworkCore.MongoDB.Tests.csproj
│ │ ├── Metadata/
│ │ │ ├── Conventions/
│ │ │ │ └── MongoDatabaseConventionTests.cs
│ │ │ ├── MongoDbEntityTypeAnnotationsTests.cs
│ │ │ └── MongoDbModelAnnotationsTests.cs
│ │ ├── MongoDbContextTestBase.cs
│ │ ├── MongoDbContextTests.cs
│ │ ├── MongoDbUtilitiesTests.cs
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── Storage/
│ │ │ ├── MongoDbConnectionTests.cs
│ │ │ ├── MongoDbDatabaseCreatorTests.cs
│ │ │ ├── MongoDbDatabaseTests.cs
│ │ │ └── MongoDbTypeMappingSourceTests.cs
│ │ ├── ValueGeneration/
│ │ │ ├── MongoDbValueGeneratorSelectorTests.cs
│ │ │ └── ObjectIdValueGeneratorTests.cs
│ │ └── xunit.runner.json
│ ├── Blueshift.Identity.MongoDB.Tests/
│ │ ├── Blueshift.Identity.MongoDB.Tests.csproj
│ │ ├── MongoDbIdentityFixture.cs
│ │ ├── MongoDbIdentityTestBase.cs
│ │ ├── MongoDbIdentityTestCollection.cs
│ │ ├── MongoDbRoleClaimStoreTests.cs
│ │ ├── MongoDbRoleStoreTests.cs
│ │ ├── MongoDbUserAuthenticationTokenStoreTests.cs
│ │ ├── MongoDbUserAuthenticatorKeyStoreTests.cs
│ │ ├── MongoDbUserClaimStoreTests.cs
│ │ ├── MongoDbUserEmailStoreTests.cs
│ │ ├── MongoDbUserLockoutStoreTests.cs
│ │ ├── MongoDbUserLoginStoreTests.cs
│ │ ├── MongoDbUserPasswordStoreTests.cs
│ │ ├── MongoDbUserPhoneNumberStoreTests.cs
│ │ ├── MongoDbUserRoleStoreTests.cs
│ │ ├── MongoDbUserSecurityStampStoreTests.cs
│ │ ├── MongoDbUserStoreTests.cs
│ │ ├── MongoDbUserTwoFactorRecoveryCodeStoreTests.cs
│ │ ├── MongoDbUserTwoFactorStoreTests.cs
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── _Comparers.cs
│ │ └── xunit.runner.json
│ └── Directory.Build.props
└── version.props
================================================
FILE CONTENTS
================================================
================================================
FILE: .dockerignore
================================================
.dockerignore
.env
.git
.gitignore
.vs
.vscode
docker-compose.yml
docker-compose.*.yml
*/bin
*/obj
================================================
FILE: .gitattributes
================================================
* text=auto
*.sh text eol=lf
================================================
FILE: .gitignore
================================================
/.build/
/global.json
QueryBaseline.cs
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
*.user.sln*
/test.ps1
*.stackdump
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
# Visual Studio 2015 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# BenchmarkDotNet Results
[Bb]enchmarkDotNet.Artifacts/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
**/Properties/launchSettings.json
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding add-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# TODO: Comment the next line if you want to checkin your web deploy settings
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/packages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
# SQL Server files
*.mdf
*.ldf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Typescript v1 declaration files
typings/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# JetBrains Rider
.idea/
*.sln.iml
# CodeRush
.cr/
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
test/Microsoft.EntityFrameworkCore.MongoDB.Tests/.data/
================================================
FILE: .travis.yml
================================================
language: csharp
sudo: false
dotnet: 2.1.2
dist: trusty
env:
global:
- DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
- DOTNET_CLI_TELEMETRY_OPTOUT: 1
mono: none
services:
- mongodb
os:
- linux
# - osx
osx_image: xcode8.1
addons:
apt:
packages:
- libunwind8
branches:
only:
- master
- release
- develop
- /^rel\/.*/
- /^(.*\/)?ci-.*$/
script:
- ./build.sh
================================================
FILE: Blueshift.EntityFrameworkCore.sln
================================================
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.27004.2010
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{FAF9C31C-A1AF-42A9-9306-EC190DCACCC7}"
ProjectSection(SolutionItems) = preProject
build\dependencies.props = build\dependencies.props
build\repo.beforecommon.props = build\repo.beforecommon.props
build\repo.props = build\repo.props
build\repo.targets = build\repo.targets
build\sources.props = build\sources.props
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Globals", "Globals", "{6841D576-C833-4614-89D8-4CF4DECD1CFA}"
ProjectSection(SolutionItems) = preProject
.travis.yml = .travis.yml
appveyor.yml = appveyor.yml
build.cmd = build.cmd
build.sh = build.sh
Directory.Build.props = Directory.Build.props
Directory.Build.targets = Directory.Build.targets
global.json = global.json
korebuild-lock.txt = korebuild-lock.txt
korebuild.json = korebuild.json
NuGet.config = NuGet.config
README.md = README.md
run.cmd = run.cmd
run.ps1 = run.ps1
run.sh = run.sh
version.props = version.props
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{CE6B50B2-34AE-44C9-940A-4E48C3E1B3BC}"
ProjectSection(SolutionItems) = preProject
src\Directory.Build.props = src\Directory.Build.props
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{258D5057-81B9-40EC-A872-D21E27452749}"
ProjectSection(SolutionItems) = preProject
test\Directory.Build.props = test\Directory.Build.props
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared", "Shared", "{2B598BE4-9107-4F65-90E7-749F3A41F9D6}"
ProjectSection(SolutionItems) = preProject
src\Shared\Check.cs = src\Shared\Check.cs
src\Shared\CodeAnnotations.cs = src\Shared\CodeAnnotations.cs
src\Shared\MemberInfoExtensions.cs = src\Shared\MemberInfoExtensions.cs
src\Shared\PropertyInfoExtensions.cs = src\Shared\PropertyInfoExtensions.cs
src\Shared\SharedTypeExtensions.cs = src\Shared\SharedTypeExtensions.cs
src\Shared\StringBuilderExtensions.cs = src\Shared\StringBuilderExtensions.cs
EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Blueshift.EntityFrameworkCore.MongoDB", "src\Blueshift.EntityFrameworkCore.MongoDB\Blueshift.EntityFrameworkCore.MongoDB.csproj", "{E0841FBC-A266-41BF-AA5F-4514692D2161}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Blueshift.EntityFrameworkCore.MongoDB.SampleDomain", "src\Blueshift.EntityFrameworkCore.MongoDB.SampleDomain\Blueshift.EntityFrameworkCore.MongoDB.SampleDomain.csproj", "{169261F6-0B97-47A5-98B8-E6AA084FF6A4}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Blueshift.EntityFrameworkCore.MongoDB.Tests", "test\Blueshift.EntityFrameworkCore.MongoDB.Tests\Blueshift.EntityFrameworkCore.MongoDB.Tests.csproj", "{314B80D1-CBB7-4EF5-A5BD-3AD9F14069E8}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Blueshift.Identity.MongoDB", "src\Blueshift.Identity.MongoDB\Blueshift.Identity.MongoDB.csproj", "{85A1B2BB-BF46-445A-85C3-CFB1CCCB33CE}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Blueshift.Identity.MongoDB.Tests", "test\Blueshift.Identity.MongoDB.Tests\Blueshift.Identity.MongoDB.Tests.csproj", "{E7AF1BE9-6017-4FDF-BDEC-B3FAC1888A25}"
EndProject
Project("{E53339B2-1760-4266-BCC7-CA923CBCF16C}") = "docker-compose", "docker-compose.dcproj", "{04CEB217-71E2-4DBD-B35A-737EE7D258B8}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{E0841FBC-A266-41BF-AA5F-4514692D2161}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E0841FBC-A266-41BF-AA5F-4514692D2161}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E0841FBC-A266-41BF-AA5F-4514692D2161}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E0841FBC-A266-41BF-AA5F-4514692D2161}.Release|Any CPU.Build.0 = Release|Any CPU
{169261F6-0B97-47A5-98B8-E6AA084FF6A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{169261F6-0B97-47A5-98B8-E6AA084FF6A4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{169261F6-0B97-47A5-98B8-E6AA084FF6A4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{169261F6-0B97-47A5-98B8-E6AA084FF6A4}.Release|Any CPU.Build.0 = Release|Any CPU
{314B80D1-CBB7-4EF5-A5BD-3AD9F14069E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{314B80D1-CBB7-4EF5-A5BD-3AD9F14069E8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{314B80D1-CBB7-4EF5-A5BD-3AD9F14069E8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{314B80D1-CBB7-4EF5-A5BD-3AD9F14069E8}.Release|Any CPU.Build.0 = Release|Any CPU
{85A1B2BB-BF46-445A-85C3-CFB1CCCB33CE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{85A1B2BB-BF46-445A-85C3-CFB1CCCB33CE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{85A1B2BB-BF46-445A-85C3-CFB1CCCB33CE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{85A1B2BB-BF46-445A-85C3-CFB1CCCB33CE}.Release|Any CPU.Build.0 = Release|Any CPU
{E7AF1BE9-6017-4FDF-BDEC-B3FAC1888A25}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E7AF1BE9-6017-4FDF-BDEC-B3FAC1888A25}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E7AF1BE9-6017-4FDF-BDEC-B3FAC1888A25}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E7AF1BE9-6017-4FDF-BDEC-B3FAC1888A25}.Release|Any CPU.Build.0 = Release|Any CPU
{04CEB217-71E2-4DBD-B35A-737EE7D258B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{04CEB217-71E2-4DBD-B35A-737EE7D258B8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{04CEB217-71E2-4DBD-B35A-737EE7D258B8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{04CEB217-71E2-4DBD-B35A-737EE7D258B8}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{2B598BE4-9107-4F65-90E7-749F3A41F9D6} = {CE6B50B2-34AE-44C9-940A-4E48C3E1B3BC}
{E0841FBC-A266-41BF-AA5F-4514692D2161} = {CE6B50B2-34AE-44C9-940A-4E48C3E1B3BC}
{169261F6-0B97-47A5-98B8-E6AA084FF6A4} = {CE6B50B2-34AE-44C9-940A-4E48C3E1B3BC}
{314B80D1-CBB7-4EF5-A5BD-3AD9F14069E8} = {258D5057-81B9-40EC-A872-D21E27452749}
{85A1B2BB-BF46-445A-85C3-CFB1CCCB33CE} = {CE6B50B2-34AE-44C9-940A-4E48C3E1B3BC}
{E7AF1BE9-6017-4FDF-BDEC-B3FAC1888A25} = {258D5057-81B9-40EC-A872-D21E27452749}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {AA7DD3E1-6124-4D69-A1C3-E4D643A5C4D5}
EndGlobalSection
EndGlobal
================================================
FILE: Blueshift.EntityFrameworkCore.sln.DotSettings
================================================
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:Boolean x:Key="/Default/UserDictionary/Words/=Materializer/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>
================================================
FILE: Directory.Build.props
================================================
<Project>
<Import Project="version.props" />
<Import Project="build/dependencies.props" />
<Import Project="build/sources.props" />
<PropertyGroup>
<BuildYear>$([System.DateTime]::Now.ToString('yyyy'))</BuildYear>
<RepositoryType>git</RepositoryType>
<RepositoryRoot>$(MSBuildThisFileDirectory)</RepositoryRoot>
<RepositoryUrl>https://github.com/crhairr/EntityFrameworkCore.MongoDb.git</RepositoryUrl>
<!--<AssemblyOriginatorKeyFile>$(MSBuildThisFileDirectory)Key.snk</AssemblyOriginatorKeyFile>
<PublicSign Condition="'$(OS)' != 'Windows_NT'">True</PublicSign>
<SignAssembly>True</SignAssembly>-->
<TreatWarningsAsErrors>True</TreatWarningsAsErrors>
<Company>Blueshift Software, LLC</Company>
<Authors>$(Company)</Authors>
<Copyright>© $(Company) @ $(BuildYear) - all rights reserved.</Copyright>
<PackageTags>Blueshift;MongoDB;Entity Framework Core;entity-framework-core;EF;Data;O/RM</PackageTags>
<Product>Blueshift Software MongoDB Provider for Entity Framework Core</Product>
<DebugType Condition="'$(Configuration)' == 'Debug' AND '$(OS)' == 'Windows_NT'">full</DebugType>
<LangVersion>7.2</LangVersion>
<NoWarn>$(NoWarn);CS8032;</NoWarn>
<AssemblyName>$(MSBuildProjectName)</AssemblyName>
<RootNamespace>$(MSBuildProjectName)</RootNamespace>
</PropertyGroup>
<ItemGroup>
<EmbeddedResource Include="**\*.rd.xml" />
</ItemGroup>
</Project>
================================================
FILE: Directory.Build.targets
================================================
<Project>
<PropertyGroup>
<!-- Assign these values at the end of the project after TargetFramework has been assigned. TargetFramework is not assigned yet in Directory.Build.props. -->
<RuntimeFrameworkVersion Condition=" '$(TargetFramework)' == 'netcoreapp2.0' ">$(MicrosoftNETCoreApp20PackageVersion)</RuntimeFrameworkVersion>
<NETStandardImplicitPackageVersion Condition=" '$(TargetFramework)' == 'netstandard2.0' ">$(NETStandardLibrary20PackageVersion)</NETStandardImplicitPackageVersion>
<!-- aspnet/BuildTools#662 Don't police what version of NetCoreApp we use -->
<NETCoreAppMaximumVersion>99.9</NETCoreAppMaximumVersion>
</PropertyGroup>
</Project>
================================================
FILE: LICENSE.txt
================================================
Copyright (c) 2017 Blueshift Software, LLC. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
these files except in compliance with the License. You may obtain a copy of the
License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed
under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
CONDITIONS OF ANY KIND, either express or implied. See the License for the
specific language governing permissions and limitations under the License.
================================================
FILE: NuGet.config
================================================
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<clear />
<!-- Restore sources should be defined in build/sources.props. -->
</packageSources>
</configuration>
================================================
FILE: README.md
================================================
This repository has been defunct for some time. Due to a lack of both public interest and general support from the Microsoft Entity Framework team, I have decided to formally end support for the solution and archive the repository.
# Document Database Providers for Entity Framework Core
Welcome to the home of Document Database (NoSQL) Providers for EntityFrameworkCore!
[](https://ci.appveyor.com/project/crhairr/entityframeworkcore-mongodb/) [](https://travis-ci.org/BlueshiftSoftware/EntityFrameworkCore)
This repository currently only contains a MongoDB provider for EF Core. However, there are plans in the current roadmap to expand this with further NoSQL provider offerings.
MongoDb is a highly popular No-SQL database solution for storing structured, non-relational document data. This provider enables applications built with EntityFrameworkCore to use MongoDb instances as a backing data store.
Find out how to get started by visiting the [Wiki pages](https://github.com/crhairr/EntityFrameworkCore.MongoDb/wiki). Feel free to contribute to this repository with code, comments, wiki entries, and/or issues.
The latest release and CI previews builds are available at the EntityFrameworkCore.MongoDb [MyGet Feed](https://www.myget.org/gallery/efcore-mongodb/).
================================================
FILE: appveyor.yml
================================================
init:
- git config --global core.autocrlf true
clone_depth: 1
test: off
services:
- mongodb
environment:
global:
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
DOTNET_CLI_TELEMETRY_OPTOUT: 1
matrix:
fast_finish: true
for:
-
matrix:
only:
- image: Ubuntu
build_script:
- sh: chmod +x ./run.sh
- sh: ./run.sh default-build
-
matrix:
only:
- image: Visual Studio 2017
build_script:
- ps: .\run.ps1 default-build
artifacts:
- path: 'artifacts\build\*.nupkg'
name: MyGet
deploy:
- provider: Environment
name: MyGet
artifact: 'artifacts\build\*.nupkg'
on:
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
image:
- Ubuntu
- Visual Studio 2017
================================================
FILE: build/dependencies.props
================================================
<Project>
<PropertyGroup>
<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
</PropertyGroup>
<PropertyGroup Label="Platform Packages">
<MicrosoftNETCoreApp21PackageVersion>2.1.1</MicrosoftNETCoreApp21PackageVersion>
<NETStandardLibrary20PackageVersion>2.0.3</NETStandardLibrary20PackageVersion>
</PropertyGroup>
<PropertyGroup Label="AspNetCore Packages">
<MicrosoftAspNetCoreIdentityPackageVersion>2.1.3</MicrosoftAspNetCoreIdentityPackageVersion>
<MicrosoftEntityFrameworkCorePackageVersion>2.1.2</MicrosoftEntityFrameworkCorePackageVersion>
<MicrosoftEntityFrameworkCoreSpecificationTestsPackageVersion>2.1.2</MicrosoftEntityFrameworkCoreSpecificationTestsPackageVersion>
<MicrosoftExtensionsConfigurationPackageVersion>2.1.1</MicrosoftExtensionsConfigurationPackageVersion>
</PropertyGroup>
<PropertyGroup Label="Third-Party Packages">
<MongoDBDriverPackageVersion>2.7.3</MongoDBDriverPackageVersion>
</PropertyGroup>
<PropertyGroup Label="Test Packages">
<MicrosoftNETTestSdkPackageVersion>15.9.0</MicrosoftNETTestSdkPackageVersion>
<MoqPackageVersion>4.10.1</MoqPackageVersion>
<XunitPackageVersion>2.4.1</XunitPackageVersion>
<XunitRunnerConsolePackageVersion>2.4.1</XunitRunnerConsolePackageVersion>
<XunitRunnerVisualstudioPackageVersion>2.4.1</XunitRunnerVisualstudioPackageVersion>
</PropertyGroup>
<Import Project="$(DotNetPackageVersionPropsPath)" Condition=" '$(DotNetPackageVersionPropsPath)' != '' " />
</Project>
================================================
FILE: build/repo.beforecommon.props
================================================
<Project>
<PropertyGroup>
<!-- for local builds, always use the time-based build number -->
<IncrementalVersion>true</IncrementalVersion>
</PropertyGroup>
</Project>
================================================
FILE: build/repo.props
================================================
<Project>
<PropertyGroup>
<CoreOnly Condition="'$(CoreOnly)' == ''">False</CoreOnly>
<DisablePackageReferenceRestrictions>true</DisablePackageReferenceRestrictions>
</PropertyGroup>
<ItemGroup>
<ExcludeFromPack Include="$(RepositoryRoot)src\*Sample*\*.csproj" />
<ExcludeFromPack Include="$(RepositoryRoot)src\*Tests*\*.csproj" />
</ItemGroup>
</Project>
================================================
FILE: build/repo.targets
================================================
<Project>
<Target Name="_FilterTestProjects" BeforeTargets="TestProjects">
<ItemGroup Condition="'$(TestFilter)' != ''">
<ProjectsToTest Remove="@(ProjectsToTest)"/>
<ProjectsToTest Include="$(RepositoryRoot)test\*$(TestFilter)*\*.csproj" Exclude="@(ExcludeFromTest)" />
</ItemGroup>
<Error Text="Could not find test projects to run" Condition="@(ProjectsToTest->Count()) == 0" />
</Target>
<Target Name="SetupTests" BeforeTargets="TestProjects">
<Exec Condition="'$(APPVEYOR)' != 'true' AND '$(TRAVIS)' != 'true'"
Command="docker-compose.exe -p "efcore-mongodb" -f "$(MSBuildThisFileDirectory)\..\docker-compose.yml" up -d" />
</Target>
<Target Name="TearDownTests" AfterTargets="TestProjects">
<Exec Condition="'$(APPVEYOR)' != 'true' AND '$(TRAVIS)' != 'true'"
Command="docker-compose.exe -p "efcore-mongodb" -f "$(MSBuildThisFileDirectory)\..\docker-compose.yml" down" />
</Target>
</Project>
================================================
FILE: build/sources.props
================================================
<Project>
<Import Project="$(DotNetRestoreSourcePropsPath)" Condition="'$(DotNetRestoreSourcePropsPath)' != ''"/>
<PropertyGroup Label="RestoreSources">
<RestoreSources>$(DotNetRestoreSources)</RestoreSources>
<RestoreSources Condition="'$(DotNetBuildOffline)' != 'true' AND '$(AspNetUniverseBuildOffline)' != 'true' ">
$(RestoreSources);
https://dotnet.myget.org/F/dotnet-core/api/v3/index.json;
https://dotnet.myget.org/F/aspnetcore-dev/api/v3/index.json;
https://dotnet.myget.org/F/aspnetcore-tools/api/v3/index.json;
https://www.myget.org/F/efcore-mongodb/api/v3/index.json;
</RestoreSources>
<RestoreSources Condition="'$(DotNetBuildOffline)' != 'true'">
$(RestoreSources);
https://api.nuget.org/v3/index.json;
</RestoreSources>
</PropertyGroup>
</Project>
================================================
FILE: build.cmd
================================================
@ECHO OFF
PowerShell -NoProfile -NoLogo -ExecutionPolicy unrestricted -Command "[System.Threading.Thread]::CurrentThread.CurrentCulture = ''; [System.Threading.Thread]::CurrentThread.CurrentUICulture = '';& '%~dp0run.ps1' default-build %*; exit $LASTEXITCODE"
================================================
FILE: build.sh
================================================
#!/usr/bin/env bash
set -euo pipefail
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# Call "sync" between "chmod" and execution to prevent "text file busy" error in Docker (aufs)
chmod +x "$DIR/run.sh"; sync
"$DIR/run.sh" default-build "$@"
================================================
FILE: docker-compose.dcproj
================================================
<Project Sdk="Microsoft.Docker.Sdk">
<PropertyGroup Label="Globals">
<ProjectVersion>2.1</ProjectVersion>
<DockerTargetOS>Linux</DockerTargetOS>
<ProjectGuid>04ceb217-71e2-4dbd-b35a-737ee7d258b8</ProjectGuid>
<DockerLaunchAction>LaunchBrowser</DockerLaunchAction>
<DockerServiceUrl>{Scheme}://localhost:{ServicePort}</DockerServiceUrl>
<DockerServiceName>blueshift.authoring</DockerServiceName>
</PropertyGroup>
<ItemGroup>
<None Include="docker-compose.yml" />
<None Include=".dockerignore" />
</ItemGroup>
</Project>
================================================
FILE: docker-compose.yml
================================================
version: '3.4'
services:
mongo-efcore:
image: mongo:4.1.2-xenial
restart: always
ports:
- 27017:27017
mongo-efcore-express:
image: mongo-express
restart: always
ports:
- 27027:8081
environment:
ME_CONFIG_MONGODB_SERVER: mongo-efcore
================================================
FILE: korebuild-lock.txt
================================================
version:2.1.3-rtm-15802
commithash:a7c08b45b440a7d2058a0aa1eaa3eb6ba811976a
================================================
FILE: korebuild.json
================================================
{
"$schema": "https://raw.githubusercontent.com/aspnet/BuildTools/release/2.1/tools/korebuild.schema.json",
"channel": "release/2.1"
}
================================================
FILE: run.cmd
================================================
@ECHO OFF
PowerShell -NoProfile -NoLogo -ExecutionPolicy unrestricted -Command "[System.Threading.Thread]::CurrentThread.CurrentCulture = ''; [System.Threading.Thread]::CurrentThread.CurrentUICulture = '';& '%~dp0run.ps1' %*; exit $LASTEXITCODE"
================================================
FILE: run.ps1
================================================
#!/usr/bin/env powershell
#requires -version 4
<#
.SYNOPSIS
Executes KoreBuild commands.
.DESCRIPTION
Downloads korebuild if required. Then executes the KoreBuild command. To see available commands, execute with `-Command help`.
.PARAMETER Command
The KoreBuild command to run.
.PARAMETER Path
The folder to build. Defaults to the folder containing this script.
.PARAMETER Channel
The channel of KoreBuild to download. Overrides the value from the config file.
.PARAMETER DotNetHome
The directory where .NET Core tools will be stored.
.PARAMETER ToolsSource
The base url where build tools can be downloaded. Overrides the value from the config file.
.PARAMETER Update
Updates KoreBuild to the latest version even if a lock file is present.
.PARAMETER Reinstall
Re-installs KoreBuild
.PARAMETER ConfigFile
The path to the configuration file that stores values. Defaults to korebuild.json.
.PARAMETER ToolsSourceSuffix
The Suffix to append to the end of the ToolsSource. Useful for query strings in blob stores.
.PARAMETER CI
Sets up CI specific settings and variables.
.PARAMETER Arguments
Arguments to be passed to the command
.NOTES
This function will create a file $PSScriptRoot/korebuild-lock.txt. This lock file can be committed to source, but does not have to be.
When the lockfile is not present, KoreBuild will create one using latest available version from $Channel.
The $ConfigFile is expected to be an JSON file. It is optional, and the configuration values in it are optional as well. Any options set
in the file are overridden by command line parameters.
.EXAMPLE
Example config file:
```json
{
"$schema": "https://raw.githubusercontent.com/aspnet/BuildTools/dev/tools/korebuild.schema.json",
"channel": "dev",
"toolsSource": "https://aspnetcore.blob.core.windows.net/buildtools"
}
```
#>
[CmdletBinding(PositionalBinding = $false)]
param(
[Parameter(Mandatory = $true, Position = 0)]
[string]$Command,
[string]$Path = $PSScriptRoot,
[Alias('c')]
[string]$Channel,
[Alias('d')]
[string]$DotNetHome,
[Alias('s')]
[string]$ToolsSource,
[Alias('u')]
[switch]$Update,
[switch]$Reinstall,
[string]$ToolsSourceSuffix,
[string]$ConfigFile = $null,
[switch]$CI,
[Parameter(ValueFromRemainingArguments = $true)]
[string[]]$Arguments
)
Set-StrictMode -Version 2
$ErrorActionPreference = 'Stop'
#
# Functions
#
function Get-KoreBuild {
$lockFile = Join-Path $Path 'korebuild-lock.txt'
if (!(Test-Path $lockFile) -or $Update) {
Get-RemoteFile "$ToolsSource/korebuild/channels/$Channel/latest.txt" $lockFile $ToolsSourceSuffix
}
$version = Get-Content $lockFile | Where-Object { $_ -like 'version:*' } | Select-Object -first 1
if (!$version) {
Write-Error "Failed to parse version from $lockFile. Expected a line that begins with 'version:'"
}
$version = $version.TrimStart('version:').Trim()
$korebuildPath = Join-Paths $DotNetHome ('buildtools', 'korebuild', $version)
if ($Reinstall -and (Test-Path $korebuildPath)) {
Remove-Item -Force -Recurse $korebuildPath
}
if (!(Test-Path $korebuildPath)) {
Write-Host -ForegroundColor Magenta "Downloading KoreBuild $version"
New-Item -ItemType Directory -Path $korebuildPath | Out-Null
$remotePath = "$ToolsSource/korebuild/artifacts/$version/korebuild.$version.zip"
try {
$tmpfile = Join-Path ([IO.Path]::GetTempPath()) "KoreBuild-$([guid]::NewGuid()).zip"
Get-RemoteFile $remotePath $tmpfile $ToolsSourceSuffix
if (Get-Command -Name 'Microsoft.PowerShell.Archive\Expand-Archive' -ErrorAction Ignore) {
# Use built-in commands where possible as they are cross-plat compatible
Microsoft.PowerShell.Archive\Expand-Archive -Path $tmpfile -DestinationPath $korebuildPath
}
else {
# Fallback to old approach for old installations of PowerShell
Add-Type -AssemblyName System.IO.Compression.FileSystem
[System.IO.Compression.ZipFile]::ExtractToDirectory($tmpfile, $korebuildPath)
}
}
catch {
Remove-Item -Recurse -Force $korebuildPath -ErrorAction Ignore
throw
}
finally {
Remove-Item $tmpfile -ErrorAction Ignore
}
}
return $korebuildPath
}
function Join-Paths([string]$path, [string[]]$childPaths) {
$childPaths | ForEach-Object { $path = Join-Path $path $_ }
return $path
}
function Get-RemoteFile([string]$RemotePath, [string]$LocalPath, [string]$RemoteSuffix) {
if ($RemotePath -notlike 'http*') {
Copy-Item $RemotePath $LocalPath
return
}
$retries = 10
while ($retries -gt 0) {
$retries -= 1
try {
Invoke-WebRequest -UseBasicParsing -Uri $($RemotePath + $RemoteSuffix) -OutFile $LocalPath
return
}
catch {
Write-Verbose "Request failed. $retries retries remaining"
}
}
Write-Error "Download failed: '$RemotePath'."
}
#
# Main
#
# Load configuration or set defaults
$Path = Resolve-Path $Path
if (!$ConfigFile) { $ConfigFile = Join-Path $Path 'korebuild.json' }
if (Test-Path $ConfigFile) {
try {
$config = Get-Content -Raw -Encoding UTF8 -Path $ConfigFile | ConvertFrom-Json
if ($config) {
if (!($Channel) -and (Get-Member -Name 'channel' -InputObject $config)) { [string] $Channel = $config.channel }
if (!($ToolsSource) -and (Get-Member -Name 'toolsSource' -InputObject $config)) { [string] $ToolsSource = $config.toolsSource}
}
}
catch {
Write-Warning "$ConfigFile could not be read. Its settings will be ignored."
Write-Warning $Error[0]
}
}
if (!$DotNetHome) {
$DotNetHome = if ($env:DOTNET_HOME) { $env:DOTNET_HOME } `
elseif ($env:USERPROFILE) { Join-Path $env:USERPROFILE '.dotnet'} `
elseif ($env:HOME) {Join-Path $env:HOME '.dotnet'}`
else { Join-Path $PSScriptRoot '.dotnet'}
}
if (!$Channel) { $Channel = 'dev' }
if (!$ToolsSource) { $ToolsSource = 'https://aspnetcore.blob.core.windows.net/buildtools' }
# Execute
$korebuildPath = Get-KoreBuild
Import-Module -Force -Scope Local (Join-Path $korebuildPath 'KoreBuild.psd1')
try {
Set-KoreBuildSettings -ToolsSource $ToolsSource -DotNetHome $DotNetHome -RepoPath $Path -ConfigFile $ConfigFile -CI:$CI
Invoke-KoreBuildCommand $Command @Arguments
}
finally {
Remove-Module 'KoreBuild' -ErrorAction Ignore
}
================================================
FILE: run.sh
================================================
#!/usr/bin/env bash
set -euo pipefail
#
# variables
#
RESET="\033[0m"
RED="\033[0;31m"
YELLOW="\033[0;33m"
MAGENTA="\033[0;95m"
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
[ -z "${DOTNET_HOME:-}" ] && DOTNET_HOME="$HOME/.dotnet"
verbose=false
update=false
reinstall=false
repo_path="$DIR"
channel=''
tools_source=''
tools_source_suffix=''
ci=false
#
# Functions
#
__usage() {
echo "Usage: $(basename "${BASH_SOURCE[0]}") command [options] [[--] <Arguments>...]"
echo ""
echo "Arguments:"
echo " command The command to be run."
echo " <Arguments>... Arguments passed to the command. Variable number of arguments allowed."
echo ""
echo "Options:"
echo " --verbose Show verbose output."
echo " -c|--channel <CHANNEL> The channel of KoreBuild to download. Overrides the value from the config file.."
echo " --config-file <FILE> The path to the configuration file that stores values. Defaults to korebuild.json."
echo " -d|--dotnet-home <DIR> The directory where .NET Core tools will be stored. Defaults to '\$DOTNET_HOME' or '\$HOME/.dotnet."
echo " --path <PATH> The directory to build. Defaults to the directory containing the script."
echo " -s|--tools-source|-ToolsSource <URL> The base url where build tools can be downloaded. Overrides the value from the config file."
echo " --tools-source-suffix|-ToolsSourceSuffix <SUFFIX> The suffix to append to tools-source. Useful for query strings."
echo " -u|--update Update to the latest KoreBuild even if the lock file is present."
echo " --reinstall Reinstall KoreBuild."
echo " --ci Apply CI specific settings and environment variables."
echo ""
echo "Description:"
echo " This function will create a file \$DIR/korebuild-lock.txt. This lock file can be committed to source, but does not have to be."
echo " When the lockfile is not present, KoreBuild will create one using latest available version from \$channel."
if [[ "${1:-}" != '--no-exit' ]]; then
exit 2
fi
}
get_korebuild() {
local version
local lock_file="$repo_path/korebuild-lock.txt"
if [ ! -f "$lock_file" ] || [ "$update" = true ]; then
__get_remote_file "$tools_source/korebuild/channels/$channel/latest.txt" "$lock_file" "$tools_source_suffix"
fi
version="$(grep 'version:*' -m 1 "$lock_file")"
if [[ "$version" == '' ]]; then
__error "Failed to parse version from $lock_file. Expected a line that begins with 'version:'"
return 1
fi
version="$(echo "${version#version:}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')"
local korebuild_path="$DOTNET_HOME/buildtools/korebuild/$version"
if [ "$reinstall" = true ] && [ -d "$korebuild_path" ]; then
rm -rf "$korebuild_path"
fi
{
if [ ! -d "$korebuild_path" ]; then
mkdir -p "$korebuild_path"
local remote_path="$tools_source/korebuild/artifacts/$version/korebuild.$version.zip"
tmpfile="$(mktemp)"
echo -e "${MAGENTA}Downloading KoreBuild ${version}${RESET}"
if __get_remote_file "$remote_path" "$tmpfile" "$tools_source_suffix"; then
unzip -q -d "$korebuild_path" "$tmpfile"
fi
rm "$tmpfile" || true
fi
source "$korebuild_path/KoreBuild.sh"
} || {
if [ -d "$korebuild_path" ]; then
echo "Cleaning up after failed installation"
rm -rf "$korebuild_path" || true
fi
return 1
}
}
__error() {
echo -e "${RED}error: $*${RESET}" 1>&2
}
__warn() {
echo -e "${YELLOW}warning: $*${RESET}"
}
__machine_has() {
hash "$1" > /dev/null 2>&1
return $?
}
__get_remote_file() {
local remote_path=$1
local local_path=$2
local remote_path_suffix=$3
if [[ "$remote_path" != 'http'* ]]; then
cp "$remote_path" "$local_path"
return 0
fi
local failed=false
if __machine_has wget; then
wget --tries 10 --quiet -O "$local_path" "${remote_path}${remote_path_suffix}" || failed=true
else
failed=true
fi
if [ "$failed" = true ] && __machine_has curl; then
failed=false
curl --retry 10 -sSL -f --create-dirs -o "$local_path" "${remote_path}${remote_path_suffix}" || failed=true
fi
if [ "$failed" = true ]; then
__error "Download failed: $remote_path" 1>&2
return 1
fi
}
#
# main
#
command="${1:-}"
shift
while [[ $# -gt 0 ]]; do
case $1 in
-\?|-h|--help)
__usage --no-exit
exit 0
;;
-c|--channel|-Channel)
shift
channel="${1:-}"
[ -z "$channel" ] && __usage
;;
--config-file|-ConfigFile)
shift
config_file="${1:-}"
[ -z "$config_file" ] && __usage
if [ ! -f "$config_file" ]; then
__error "Invalid value for --config-file. $config_file does not exist."
exit 1
fi
;;
-d|--dotnet-home|-DotNetHome)
shift
DOTNET_HOME="${1:-}"
[ -z "$DOTNET_HOME" ] && __usage
;;
--path|-Path)
shift
repo_path="${1:-}"
[ -z "$repo_path" ] && __usage
;;
-s|--tools-source|-ToolsSource)
shift
tools_source="${1:-}"
[ -z "$tools_source" ] && __usage
;;
--tools-source-suffix|-ToolsSourceSuffix)
shift
tools_source_suffix="${1:-}"
[ -z "$tools_source_suffix" ] && __usage
;;
-u|--update|-Update)
update=true
;;
--reinstall|-[Rr]einstall)
reinstall=true
;;
--ci)
ci=true
;;
--verbose|-Verbose)
verbose=true
;;
--)
shift
break
;;
*)
break
;;
esac
shift
done
if ! __machine_has unzip; then
__error 'Missing required command: unzip'
exit 1
fi
if ! __machine_has curl && ! __machine_has wget; then
__error 'Missing required command. Either wget or curl is required.'
exit 1
fi
[ -z "${config_file:-}" ] && config_file="$repo_path/korebuild.json"
if [ -f "$config_file" ]; then
if __machine_has jq ; then
if jq '.' "$config_file" >/dev/null ; then
config_channel="$(jq -r 'select(.channel!=null) | .channel' "$config_file")"
config_tools_source="$(jq -r 'select(.toolsSource!=null) | .toolsSource' "$config_file")"
else
__warn "$config_file is invalid JSON. Its settings will be ignored."
fi
elif __machine_has python ; then
if python -c "import json,codecs;obj=json.load(codecs.open('$config_file', 'r', 'utf-8-sig'))" >/dev/null ; then
config_channel="$(python -c "import json,codecs;obj=json.load(codecs.open('$config_file', 'r', 'utf-8-sig'));print(obj['channel'] if 'channel' in obj else '')")"
config_tools_source="$(python -c "import json,codecs;obj=json.load(codecs.open('$config_file', 'r', 'utf-8-sig'));print(obj['toolsSource'] if 'toolsSource' in obj else '')")"
else
__warn "$config_file is invalid JSON. Its settings will be ignored."
fi
else
__warn 'Missing required command: jq or pyton. Could not parse the JSON file. Its settings will be ignored.'
fi
[ ! -z "${config_channel:-}" ] && channel="$config_channel"
[ ! -z "${config_tools_source:-}" ] && tools_source="$config_tools_source"
fi
[ -z "$channel" ] && channel='dev'
[ -z "$tools_source" ] && tools_source='https://aspnetcore.blob.core.windows.net/buildtools'
get_korebuild
set_korebuildsettings "$tools_source" "$DOTNET_HOME" "$repo_path" "$config_file" "$ci"
invoke_korebuild_command "$command" "$@"
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Conventions/AbstractBaseClassConvention.cs
================================================
using Microsoft.EntityFrameworkCore.Utilities;
using MongoDB.Bson.Serialization;
using MongoDB.Bson.Serialization.Attributes;
using MongoDB.Bson.Serialization.Conventions;
namespace Blueshift.EntityFrameworkCore.MongoDB.Adapter.Conventions
{
/// <inheritdoc cref="ConventionBase" />
/// <inheritdoc cref="IClassMapConvention" />
/// <summary>
/// A convention that specifies that a discriminator is required when the given type is abstract.
/// </summary>
public class AbstractBaseClassConvention : BsonClassMapAttributeConvention<BsonKnownTypesAttribute>
{
/// <inheritdoc />
/// <summary>
/// Process the conventions on <paramref name="classMap"/> according to the given <paramref name="attribute"/>.
/// </summary>
/// <param name="classMap">The <see cref="BsonClassMap"/> to which the conventions will be assigned.</param>
/// <param name="attribute">The <see cref="BsonKnownTypesAttribute" /> that defines the convention.</param>
protected override void Apply(BsonClassMap classMap, BsonKnownTypesAttribute attribute)
{
Check.NotNull(classMap, nameof(classMap));
if (!classMap.DiscriminatorIsRequired)
{
classMap.SetDiscriminatorIsRequired(classMap.ClassType.IsAbstract);
}
}
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Conventions/BsonClassMapAttributeConvention.cs
================================================
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Text.RegularExpressions;
using JetBrains.Annotations;
using Microsoft.EntityFrameworkCore.Utilities;
using MongoDB.Bson.Serialization;
using MongoDB.Bson.Serialization.Conventions;
namespace Blueshift.EntityFrameworkCore.MongoDB.Adapter.Conventions
{
/// <inheritdoc cref="ConventionBase" />
/// <inheritdoc cref="IClassMapConvention" />
/// <summary>
/// Base class for attribute-based <see cref="T:MongoDB.Bson.Serialization.BsonMemberMap" /> convention processing.
/// </summary>
/// <typeparam name="TAttribute">The type of attribute to process.</typeparam>
public abstract class BsonClassMapAttributeConvention<TAttribute> : ConventionBase, IClassMapConvention
where TAttribute : Attribute
{
/// <inheritdoc />
/// <summary>
/// Initializes a new instance of the <see cref="BsonClassMapAttributeConvention{TAttribute}"/>.
/// </summary>
protected BsonClassMapAttributeConvention()
: base(Regex.Replace(typeof(TAttribute).Name, "Attribute$", ""))
{
}
/// <inheritdoc />
/// <summary>
/// Processes each <typeparamref name="TAttribute"/> defined on the given <paramref name="classMap"/>
/// member info and
/// </summary>
/// <param name="classMap">The <see cref="BsonMemberMap"/> to </param>
public virtual void Apply(BsonClassMap classMap)
{
Check.NotNull(classMap, nameof(classMap));
IEnumerable<TAttribute> memberMapAttributes = classMap
.ClassType
.GetCustomAttributes<TAttribute>();
foreach (TAttribute attribute in memberMapAttributes)
{
Apply(classMap, attribute);
}
}
/// <summary>
/// Process the conventions on <paramref name="classMap"/> according to the given <paramref name="attribute"/>.
/// </summary>
/// <param name="classMap">The <see cref="BsonClassMap"/> to which the conventions will be assigned.</param>
/// <param name="attribute">The <typeparamref name="TAttribute" /> that defines the convention.</param>
protected abstract void Apply([NotNull] BsonClassMap classMap, [NotNull] TAttribute attribute);
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Conventions/BsonMemberMapAttributeConvention.cs
================================================
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Text.RegularExpressions;
using JetBrains.Annotations;
using Microsoft.EntityFrameworkCore.Utilities;
using MongoDB.Bson.Serialization;
using MongoDB.Bson.Serialization.Conventions;
namespace Blueshift.EntityFrameworkCore.MongoDB.Adapter.Conventions
{
/// <summary>
/// Base class for attribute-based <see cref="BsonMemberMap"/> convention processing.
/// </summary>
/// <typeparam name="TAttribute">The type of attribute to process.</typeparam>
public abstract class BsonMemberMapAttributeConvention<TAttribute> : ConventionBase, IMemberMapConvention
where TAttribute : Attribute
{
/// <summary>
/// Initializes a new instance of the <see cref="BsonMemberMapAttributeConvention{TAttribute}"/>.
/// </summary>
protected BsonMemberMapAttributeConvention()
: base(Regex.Replace(typeof(TAttribute).Name, "Attribute$", ""))
{
}
/// <summary>
/// Processes each <typeparamref name="TAttribute"/> defined on the given <paramref name="memberMap"/>
/// member info and
/// </summary>
/// <param name="memberMap">The <see cref="BsonMemberMap"/> to </param>
public virtual void Apply([NotNull] BsonMemberMap memberMap)
{
Check.NotNull(memberMap, nameof(memberMap));
IEnumerable<TAttribute> memberMapAttributes = memberMap.MemberInfo
.GetCustomAttributes<TAttribute>();
foreach (TAttribute attribute in memberMapAttributes)
{
Apply(memberMap, attribute);
}
}
/// <summary>
/// Process the conventions on <paramref name="memberMap"/> according to the given <paramref name="attribute"/>.
/// </summary>
/// <param name="memberMap">The <see cref="BsonMemberMap"/> to which the conventions will be assigned.</param>
/// <param name="attribute">The <typeparamref name="TAttribute" /> that defines the convention.</param>
protected abstract void Apply([NotNull] BsonMemberMap memberMap, [NotNull] TAttribute attribute);
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Conventions/IgnoreEmptyEnumerablesConvention.cs
================================================
using System;
using System.Collections;
using System.Text.RegularExpressions;
using JetBrains.Annotations;
using Microsoft.EntityFrameworkCore.Utilities;
using MongoDB.Bson.Serialization;
using MongoDB.Bson.Serialization.Conventions;
namespace Blueshift.EntityFrameworkCore.MongoDB.Adapter.Conventions
{
/// <summary>
/// A convention that ignores empty <see cref="IEnumerable"/> instances when serializing Bson documents.
/// </summary>
public class IgnoreEmptyEnumerablesConvention : ConventionBase, IMemberMapConvention
{
/// <summary>
/// Initializes a new instance of the <see cref="IgnoreEmptyEnumerablesConvention"/> class.
/// </summary>
public IgnoreEmptyEnumerablesConvention()
: base(Regex.Replace(nameof(IgnoreEmptyEnumerablesConvention), "Convention$", ""))
{
}
/// <summary>
/// Applies the Ignore Empty Enumerables convention to the given <paramref name="memberMap"/>.
/// </summary>
/// <param name="memberMap">The <see cref="BsonMemberMap" /> to which the convention will be applied.</param>
public virtual void Apply([NotNull] BsonMemberMap memberMap)
{
Check.NotNull(memberMap, nameof(memberMap));
if (memberMap.MemberType.TryGetSequenceType() != null)
{
memberMap.SetShouldSerializeMethod(@object =>
{
object value = memberMap.Getter(@object);
return (value as IEnumerable)?.GetEnumerator().MoveNext() ?? false;
});
}
}
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Conventions/IgnoreNullOrEmptyStringsConvention.cs
================================================
using System.Text.RegularExpressions;
using JetBrains.Annotations;
using Microsoft.EntityFrameworkCore.Utilities;
using MongoDB.Bson.Serialization;
using MongoDB.Bson.Serialization.Conventions;
namespace Blueshift.EntityFrameworkCore.MongoDB.Adapter.Conventions
{
/// <summary>
/// Instructs the MongoDb C# driver to ignore null, empty, or default values of <see cref="string"/> properties.
/// </summary>
public class IgnoreNullOrEmptyStringsConvention : ConventionBase, IMemberMapConvention
{
/// <summary>
/// Initializes a new instance of the <see cref="IgnoreNullOrEmptyStringsConvention"/> class.
/// </summary>
public IgnoreNullOrEmptyStringsConvention()
: base(Regex.Replace(nameof(IgnoreNullOrEmptyStringsConvention), "Convention$", ""))
{
}
/// <summary>
/// Applies the Ignore Null or Empty Strings convention to the given <paramref name="memberMap"/>.
/// </summary>
/// <param name="memberMap">The <see cref="BsonMemberMap" /> to which the convention will be applied.</param>
public virtual void Apply([NotNull] BsonMemberMap memberMap)
{
Check.NotNull(memberMap, nameof(memberMap));
if (memberMap.MemberType == typeof(string))
{
SetShouldSerializeMethod(memberMap);
}
}
private static void SetShouldSerializeMethod(BsonMemberMap memberMap)
{
var defaultString = memberMap.DefaultValue as string;
if (!string.IsNullOrEmpty(defaultString))
{
ShouldSerializeIfNotDefault(memberMap, defaultString);
}
else
{
ShouldSerializeIfNotEmpty(memberMap);
}
}
private static void ShouldSerializeIfNotEmpty(BsonMemberMap memberMap)
=> memberMap.SetShouldSerializeMethod(@object => !string.IsNullOrEmpty(memberMap.Getter(@object) as string));
private static void ShouldSerializeIfNotDefault(BsonMemberMap memberMap, string defaultString)
=> memberMap.SetShouldSerializeMethod(@object => !string.Equals(defaultString, memberMap.Getter(@object) as string));
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Conventions/KeyAttributeConvention.cs
================================================
using System.ComponentModel.DataAnnotations;
using Microsoft.EntityFrameworkCore.Utilities;
using MongoDB.Bson.Serialization;
namespace Blueshift.EntityFrameworkCore.MongoDB.Adapter.Conventions
{
/// <summary>
/// A convention that sets the <see cref="BsonClassMap.IdMemberMap"/> of a <see cref="BsonClassMap"/>
/// if that property has been decorated with a <see cref="KeyAttribute"/>.
/// </summary>
public class KeyAttributeConvention : BsonMemberMapAttributeConvention<KeyAttribute>
{
/// <summary>
/// Applies the Key Attribute convention to the given <paramref name="memberMap"/>.
/// </summary>
/// <param name="memberMap">The <see cref="BsonMemberMap" /> to which the convention will be applied.</param>
/// <param name="attribute">The <see cref="KeyAttribute"/> to apply.</param>
protected override void Apply(BsonMemberMap memberMap, KeyAttribute attribute)
=> Check.NotNull(memberMap, nameof(memberMap))
.ClassMap
.SetIdMember(memberMap);
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Conventions/NavigationSrializationMemberMapConvention.cs
================================================
using System;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Reflection;
using Blueshift.EntityFrameworkCore.MongoDB.Adapter.Serialization;
using Microsoft.EntityFrameworkCore.Utilities;
using MongoDB.Bson.Serialization;
using MongoDB.Bson.Serialization.Attributes;
using MongoDB.Bson.Serialization.Conventions;
namespace Blueshift.EntityFrameworkCore.MongoDB.Adapter.Conventions
{
/// <inheritdoc cref="ConventionBase" />
/// <inheritdoc cref="IPostProcessingConvention" />
/// <summary>
/// A convention for specifying how to serialize navigation properties.
/// </summary>
public class NavigationSrializationMemberMapConvention : ConventionBase, IMemberMapConvention
{
/// <inheritdoc />
/// <summary>
/// Checks whether the member map represents a navigation, and sets the member map's serializer.
/// </summary>
/// <param name="memberMap">The member map.</param>
public void Apply(BsonMemberMap memberMap)
{
Type memberTargetType = Check.NotNull(memberMap, nameof(memberMap)).MemberType.TryGetSequenceType()
?? memberMap.MemberType;
if (!memberTargetType.IsPrimitive && HasIdMember(memberTargetType))
{
IBsonSerializer memberMapSerializer = (IBsonSerializer) Activator.CreateInstance(
typeof(NavigationBsonMemberMapSerializer<>).MakeGenericType(memberTargetType),
memberMap);
memberMap.SetSerializer(memberMapSerializer);
}
}
private bool HasIdMember(Type type)
=> !type.IsPrimitive
&& type
.GetMembers(BindingFlags.FlattenHierarchy | BindingFlags.Public | BindingFlags.Instance)
.Any(memberInfo => memberInfo.IsDefined(typeof(BsonIdAttribute))
|| memberInfo.IsDefined(typeof(KeyAttribute)));
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Conventions/NotMappedAttributeConvention.cs
================================================
using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore.Utilities;
using MongoDB.Bson.Serialization;
namespace Blueshift.EntityFrameworkCore.MongoDB.Adapter.Conventions
{
/// <summary>
/// Marks a <see cref="BsonMemberMap"/> as ignored during serialization.
/// </summary>
public class NotMappedAttributeConvention : BsonMemberMapAttributeConvention<NotMappedAttribute>
{
/// <summary>
/// Applies the Not Mapped convention to the given <paramref name="memberMap"/>.
/// </summary>
/// <param name="memberMap">The <see cref="BsonMemberMap" /> to which the convention will be applied.</param>
/// <param name="attribute">The <see cref="NotMappedAttribute"/> to apply.</param>
protected override void Apply(BsonMemberMap memberMap, NotMappedAttribute attribute)
=> Check.NotNull(memberMap, nameof(memberMap))
.ClassMap
.UnmapMember(memberMap.MemberInfo);
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/EntityFrameworkConventionPack.cs
================================================
using System;
using Blueshift.EntityFrameworkCore.MongoDB.Adapter.Conventions;
using MongoDB.Bson.Serialization.Conventions;
namespace Blueshift.EntityFrameworkCore.MongoDB.Adapter
{
/// <inheritdoc />
/// <summary>
/// Provides a set of conventions that configures the MongoDb C# Driver to work appropriately with the EntityFrameworkCore.
/// </summary>
public class EntityFrameworkConventionPack : ConventionPack
{
/// <summary>
/// Registers the <see cref="EntityFrameworkConventionPack"/>.
/// </summary>
/// <param name="typeFilter"></param>
public static void Register(Func<Type, bool> typeFilter)
{
ConventionRegistry.Register(
"Blueshift.EntityFrameworkCore.MongoDb.Conventions",
Instance,
typeFilter);
}
/// <summary>
/// The singleton instance of <see cref="EntityFrameworkConventionPack"/>.
/// </summary>
public static EntityFrameworkConventionPack Instance { get; } = new EntityFrameworkConventionPack();
private EntityFrameworkConventionPack()
{
AddRange(new IConvention[]
{
new AbstractBaseClassConvention(),
new KeyAttributeConvention(),
new NavigationSrializationMemberMapConvention(),
new NotMappedAttributeConvention()
});
}
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Serialization/BsonSerializerExtensions.cs
================================================
using System;
using System.Collections.Generic;
using System.Reflection;
using JetBrains.Annotations;
using Microsoft.EntityFrameworkCore.Utilities;
using MongoDB.Bson.Serialization;
using MongoDB.Bson.Serialization.Serializers;
// ReSharper disable once CheckNamespace
namespace Blueshift.EntityFrameworkCore.MongoDB.Adapter.Serialization
{
/// <summary>
/// Provides extended functionality to <see cref="IBsonSerializer"/>.
/// </summary>
public static class BsonSerializerExtensions
{
/// <summary>
/// Modifies an instance of <see cref="IBsonSerializer"/> to only use the supplied members when serializing instances.
/// </summary>
/// <param name="bsonSerializer">The <see cref="IBsonSerializer"/> to modify.</param>
/// <param name="denormalizedMemberNames">An <see cref="IEnumerable{T}"/> of <see cref="string"/> that lists the members
/// required for serialization.</param>
/// <returns>A new instance of <see cref="IBsonSerializer"/> that serializes the information in <paramref name="denormalizedMemberNames"/>.</returns>
public static IBsonSerializer AsDenormalizingBsonClassMapSerializer(
[NotNull] this IBsonSerializer bsonSerializer,
[CanBeNull] IEnumerable<string> denormalizedMemberNames = null)
{
TypeInfo typeInfo = Check.NotNull(bsonSerializer, nameof(bsonSerializer)).GetType().GetTypeInfo();
if (bsonSerializer is IChildSerializerConfigurable childSerializerConfigurable)
{
bsonSerializer = childSerializerConfigurable.WithChildSerializer(
childSerializerConfigurable.ChildSerializer.AsDenormalizingBsonClassMapSerializer(denormalizedMemberNames));
}
else if (typeInfo.TryGetImplementationType(typeof(ReadOnlyCollectionSerializer<>),
out Type readOnlyCollectionSerializerType)
|| typeInfo.TryGetImplementationType(typeof(ReadOnlyCollectionSubclassSerializer<,>),
out readOnlyCollectionSerializerType))
{
bsonSerializer = (IBsonSerializer) Activator.CreateInstance(readOnlyCollectionSerializerType,
((IBsonSerializer) readOnlyCollectionSerializerType
.GetProperty(nameof(EnumerableSerializerBase<object[]>.ItemSerializer))
.GetValue(bsonSerializer))
.AsDenormalizingBsonClassMapSerializer(denormalizedMemberNames));
}
else
{
BsonClassMap bsonClassMap = BsonClassMap.LookupClassMap(bsonSerializer.ValueType);
bsonSerializer = (IBsonSerializer) Activator.CreateInstance(
typeof(DenormalizingBsonClassMapSerializer<>).MakeGenericType(bsonSerializer.ValueType),
bsonClassMap,
denormalizedMemberNames);
}
return bsonSerializer;
}
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Serialization/DenormalizingBsonClassMapSerializer.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using JetBrains.Annotations;
using MongoDB.Bson;
using MongoDB.Bson.IO;
using MongoDB.Bson.Serialization;
using MongoDB.Bson.Serialization.Conventions;
using MongoDB.Bson.Serialization.Serializers;
namespace Blueshift.EntityFrameworkCore.MongoDB.Adapter.Serialization
{
/// <inheritdoc />
/// <summary>
/// A serializer for writing navigation properties used by MongoDB.
/// </summary>
public class DenormalizingBsonClassMapSerializer<TClass> : BsonClassMapSerializer<TClass>
{
private readonly BsonClassMap<TClass> _classMap;
/// <inheritdoc />
/// <summary>
/// Initializes a new instance of the <see cref="DenormalizingBsonClassMapSerializer{TClass}"/> class.
/// </summary>
/// <param name="bsonClassMap">The <see cref="BsonClassMap{TClass}"/> to serialize.</param>
/// <param name="denormalizedMemberNames">Optional. An <see cref="IEnumerable{T}"/> of <see cref="string"/> referencing the members
/// to be denormalized by this serializer.</param>
public DenormalizingBsonClassMapSerializer(
[NotNull] BsonClassMap<TClass> bsonClassMap,
[CanBeNull] IEnumerable<string> denormalizedMemberNames = null)
: base(bsonClassMap)
{
_classMap = bsonClassMap;
DenormalizedMemberMaps = (denormalizedMemberNames ?? new string[0])
.Select(bsonClassMap.GetMemberMap)
.Except(new[] { null, _classMap.IdMemberMap })
.OrderBy(bsonMemberMap => bsonMemberMap.MemberName)
.ToList();
}
/// <summary>
/// Gets the <see cref="IEnumerable{T}"/> of <see cref="BsonMemberMap"/> that this serializer is configured to denormalize.
/// </summary>
public IEnumerable<BsonMemberMap> DenormalizedMemberMaps { get; }
/// <inheritdoc />
public override void Serialize(BsonSerializationContext context, BsonSerializationArgs args, TClass value)
{
IBsonWriter bsonWriter = context.Writer;
Type actualType = value?.GetType();
if (actualType == null)
{
bsonWriter.WriteNull();
}
else if (typeof(TClass).IsAssignableFrom(actualType))
{
SerializeClass(context, args, value);
}
else
{
throw new BsonSerializationException(
$"Expected an object derived from {typeof(TClass).FullName}, but received a value of type {actualType.FullName} instead.");
}
}
private void SerializeClass(BsonSerializationContext context, BsonSerializationArgs args, TClass document)
{
IBsonWriter bsonWriter = context.Writer;
bsonWriter.WriteStartDocument();
SerializeMember(context, document, _classMap.IdMemberMap);
if (ShouldSerializeDiscriminator(args.NominalType))
{
SerializeDiscriminator(context, args.NominalType, document);
}
foreach (BsonMemberMap memberMap in DenormalizedMemberMaps)
{
SerializeMember(context, document, memberMap);
}
bsonWriter.WriteEndDocument();
}
private void SerializeMember(BsonSerializationContext context, TClass document, BsonMemberMap memberMap)
{
IBsonWriter bsonWriter = context.Writer;
object value = memberMap.Getter(document);
if (memberMap.ShouldSerialize(document, value))
{
bsonWriter.WriteName(memberMap.ElementName);
memberMap.GetSerializer().Serialize(context, value);
}
}
private bool ShouldSerializeDiscriminator(Type nominalType)
=> (nominalType != _classMap.ClassType || _classMap.DiscriminatorIsRequired || _classMap.HasRootClass) && !_classMap.IsAnonymous;
private void SerializeDiscriminator(BsonSerializationContext context, Type nominalType, object obj)
{
IDiscriminatorConvention discriminatorConvention = BsonSerializer.LookupDiscriminatorConvention(_classMap.ClassType);
BsonValue discriminator = discriminatorConvention?.GetDiscriminator(nominalType, obj.GetType());
if (discriminator != null)
{
context.Writer.WriteName(discriminatorConvention.ElementName);
BsonValueSerializer.Instance.Serialize(context, discriminator);
}
}
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Serialization/NavigationBsonMemberMapSerializer.cs
================================================
using System;
using System.Collections.Generic;
using System.Reflection;
using Blueshift.EntityFrameworkCore.MongoDB.Annotations;
using Microsoft.EntityFrameworkCore.Utilities;
using MongoDB.Bson.Serialization;
namespace Blueshift.EntityFrameworkCore.MongoDB.Adapter.Serialization
{
/// <inheritdoc />
/// <summary>
/// A serializer for writing navigation properties used by MongoDB.
/// </summary>
/// <typeparam name="TClass">The type of the member to be serialized by this <see cref="NavigationBsonMemberMapSerializer{TClass}"/>.</typeparam>
public class NavigationBsonMemberMapSerializer<TClass> : IBsonSerializer<TClass>
{
private readonly Lazy<IBsonSerializer> _lazyBsonSerializer;
/// <summary>
/// Initializes a new instance of the <see cref="NavigationBsonMemberMapSerializer{TClass}"/> class.
/// </summary>
/// <param name="bsonMemberMap">The <see cref="BsonMemberMap"/> representing the member to serialize.</param>
public NavigationBsonMemberMapSerializer(BsonMemberMap bsonMemberMap)
{
MemberMap = Check.NotNull(bsonMemberMap, nameof(bsonMemberMap));
_lazyBsonSerializer = new Lazy<IBsonSerializer>(() =>
{
IEnumerable<string> denormalizedMemberNames
= bsonMemberMap.MemberInfo
.GetCustomAttribute<DenormalizeAttribute>()
?.MemberNames
?? new string[0];
return BsonSerializer.LookupSerializer(bsonMemberMap.MemberType)
.AsDenormalizingBsonClassMapSerializer(denormalizedMemberNames);
});
}
/// <summary>
/// The <see cref="BsonMemberMap"/> representing the member to serialize.
/// </summary>
public BsonMemberMap MemberMap { get; }
/// <inheritdoc />
TClass IBsonSerializer<TClass>.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
=> (TClass) Deserialize(context, args);
/// <inheritdoc />
public void Serialize(BsonSerializationContext context, BsonSerializationArgs args, TClass value)
=> _lazyBsonSerializer.Value.Serialize(context, args, value);
/// <inheritdoc />
public object Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
=> _lazyBsonSerializer.Value.Deserialize(context, args);
/// <inheritdoc />
public void Serialize(BsonSerializationContext context, BsonSerializationArgs args, object value)
=> _lazyBsonSerializer.Value.Serialize(context, args, value);
/// <inheritdoc />
public Type ValueType => MemberMap.MemberType;
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Update/DeleteOneModelFactory.cs
================================================
using JetBrains.Annotations;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Update;
using Microsoft.EntityFrameworkCore.Utilities;
using Microsoft.EntityFrameworkCore.ValueGeneration;
using MongoDB.Driver;
namespace Blueshift.EntityFrameworkCore.MongoDB.Adapter.Update
{
/// <summary>
/// Creates <see cref="DeleteOneModel{TEntity}"/> from a given <see cref="IUpdateEntry"/>.
/// </summary>
/// <typeparam name="TEntity">The type of entity being added.</typeparam>
public class DeleteOneModelFactory<TEntity> : MongoDbWriteModelFactory<TEntity>
{
/// <summary>
/// Initializes a new instance of the <see cref="MongoDbWriteModelFactory{TEntity}"/> class.
/// </summary>
/// <param name="valueGeneratorSelector">The <see cref="IValueGeneratorSelector"/> to use for populating concurrency tokens.</param>
/// <param name="entityType">The <see cref="IEntityType"/> for which this <see cref="MongoDbWriteModelFactory{TDocument}"/> will be used.</param>
public DeleteOneModelFactory(
[NotNull] IValueGeneratorSelector valueGeneratorSelector,
[NotNull] IEntityType entityType)
: base(
Check.NotNull(valueGeneratorSelector, nameof(valueGeneratorSelector)),
Check.NotNull(entityType, nameof(entityType)))
{
}
/// <summary>
/// Creates an <see cref="DeleteOneModel{TEntity}"/> that maps the given <paramref name="updateEntry"/>.
/// </summary>
/// <param name="updateEntry">The <see cref="IUpdateEntry"/> to map.</param>
/// <returns>A new <see cref="DeleteOneModel{TEntity}"/> containing the inserted values represented
/// by <paramref name="updateEntry"/>.</returns>
public override WriteModel<TEntity> CreateWriteModel(IUpdateEntry updateEntry)
=> new DeleteOneModel<TEntity>(GetLookupFilter(updateEntry));
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Update/IMongoDbWriteModelFactory.cs
================================================
using JetBrains.Annotations;
using Microsoft.EntityFrameworkCore.Update;
using MongoDB.Driver;
namespace Blueshift.EntityFrameworkCore.MongoDB.Adapter.Update
{
/// <summary>
/// Interface for generating <see cref="WriteModel{TEntity}"/> instances from <see cref="IUpdateEntry"/> instances.
/// </summary>
/// <typeparam name="TEntity">The type of entity being updated</typeparam>
public interface IMongoDbWriteModelFactory<TEntity>
{
/// <summary>
/// Converts an <see cref="IUpdateEntry"/> instance to a <see cref="WriteModel{TEntity}"/> instance.
/// </summary>
/// <param name="updateEntry">The <see cref="IUpdateEntry"/> entry to convert.</param>
/// <returns>A new <see cref="WriteModel{TEntity}"/> that contains the updates in <see cref="IUpdateEntry"/>.</returns>
WriteModel<TEntity> CreateWriteModel([NotNull] IUpdateEntry updateEntry);
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Update/IMongoDbWriteModelFactoryCache.cs
================================================
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata;
using MongoDB.Driver;
namespace Blueshift.EntityFrameworkCore.MongoDB.Adapter.Update
{
/// <summary>
/// Caches <see cref="IMongoDbWriteModelFactory{TEntity}"/> instances.
/// </summary>
public interface IMongoDbWriteModelFactoryCache
{
/// <summary>
/// Returns a cached or newly created instance of <see cref="IMongoDbWriteModelFactory{TEntity}"/> for the given
/// <paramref name="entityType"/> and <paramref name="entityState"/>.
/// </summary>
/// <typeparam name="TEntity">The type of entity being written.</typeparam>
/// <param name="entityType">The <see cref="IEntityType"/> that contains the entity metadata.</param>
/// <param name="entityState">The <see cref="EntityState"/> describing the type of <see cref="WriteModel{TEntity}"/>
/// that returned the factory will produce.</param>
/// <param name="factoryFunc">A <see cref="Func{IEntityType, EntityState, IMongoDbWriteModelFactory}"/> that can
/// be used to create a new factory instance if one has not previously been cached.</param>
/// <returns>A new or cached instance of <see cref="IMongoDbWriteModelFactory{TEntity}"/>.</returns>
IMongoDbWriteModelFactory<TEntity> GetOrAdd<TEntity>(
IEntityType entityType,
EntityState entityState,
Func<IEntityType, EntityState, IMongoDbWriteModelFactory<TEntity>> factoryFunc);
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Update/IMongoDbWriteModelFactorySelector.cs
================================================
using JetBrains.Annotations;
using Microsoft.EntityFrameworkCore.Update;
using MongoDB.Driver;
namespace Blueshift.EntityFrameworkCore.MongoDB.Adapter.Update
{
/// <summary>
/// Interface for selecting an instance of <see cref="IMongoDbWriteModelFactory{TEntity}"/>.
/// </summary>
public interface IMongoDbWriteModelFactorySelector
{
/// <summary>
/// Select an <see cref="IMongoDbWriteModelFactory{TEntity}"/> instance for the given <paramref name="updateEntry"/>.
/// </summary>
/// <param name="updateEntry">The <see cref="IUpdateEntry"/> that the write model factory will be used to translate.</param>
/// <typeparam name="TEntity">The type of entity for which to create a <see cref="IMongoDbWriteModelFactory{TEntity}"/> instance.</typeparam>
/// <returns>An instance of <see cref="IMongoDbWriteModelFactory{TEntity}"/> that can be used to convert <see cref="IUpdateEntry"/>
/// instances to <see cref="WriteModel{TDocument}"/> instances.</returns>
IMongoDbWriteModelFactory<TEntity> Select<TEntity>([NotNull] IUpdateEntry updateEntry);
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Update/InsertOneModelFactory.cs
================================================
using JetBrains.Annotations;
using Microsoft.EntityFrameworkCore.ChangeTracking.Internal;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Update;
using Microsoft.EntityFrameworkCore.Utilities;
using Microsoft.EntityFrameworkCore.ValueGeneration;
using MongoDB.Driver;
namespace Blueshift.EntityFrameworkCore.MongoDB.Adapter.Update
{
/// <inheritdoc />
/// <summary>
/// Creates <see cref="T:MongoDB.Driver.InsertOneModel`1" /> from a given <see cref="T:Microsoft.EntityFrameworkCore.Update.IUpdateEntry" />.
/// </summary>
/// <typeparam name="TEntity">The type of entity being added.</typeparam>
public class InsertOneModelFactory<TEntity> : MongoDbWriteModelFactory<TEntity>
{
/// <inheritdoc />
/// <summary>
/// Initializes a new instance of the <see cref="T:Blueshift.EntityFrameworkCore.MongoDB.Adapter.Update.MongoDbWriteModelFactory`1" /> class.
/// </summary>
/// <param name="valueGeneratorSelector">The <see cref="T:Microsoft.EntityFrameworkCore.ValueGeneration.IValueGeneratorSelector" /> to use for populating concurrency tokens.</param>
/// <param name="entityType">The <see cref="T:Microsoft.EntityFrameworkCore.Metadata.IEntityType" /> for which this <see cref="T:Blueshift.EntityFrameworkCore.MongoDB.Adapter.Update.MongoDbWriteModelFactory`1" /> will be used.</param>
public InsertOneModelFactory(
[NotNull] IValueGeneratorSelector valueGeneratorSelector,
[NotNull] IEntityType entityType)
: base(
Check.NotNull(valueGeneratorSelector, nameof(valueGeneratorSelector)),
Check.NotNull(entityType, nameof(entityType)))
{
}
/// <inheritdoc />
/// <summary>
/// Creates an <see cref="T:MongoDB.Driver.InsertOneModel`1" /> that maps the given <paramref name="updateEntry" />.
/// </summary>
/// <param name="updateEntry">The <see cref="T:Microsoft.EntityFrameworkCore.Update.IUpdateEntry" /> to map.</param>
/// <returns>A new <see cref="T:MongoDB.Driver.InsertOneModel`1" /> containing the inserted values represented
/// by <paramref name="updateEntry" />.</returns>
public override WriteModel<TEntity> CreateWriteModel(IUpdateEntry updateEntry)
{
InternalEntityEntry internalEntityEntry = Check.Is<InternalEntityEntry>(updateEntry, nameof(updateEntry));
UpdateDbGeneratedProperties(internalEntityEntry);
return new InsertOneModel<TEntity>((TEntity)internalEntityEntry.Entity);
}
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Update/MongoDbWriteModelFactory.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Reflection;
using JetBrains.Annotations;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.ChangeTracking.Internal;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Metadata.Internal;
using Microsoft.EntityFrameworkCore.Update;
using Microsoft.EntityFrameworkCore.Utilities;
using Microsoft.EntityFrameworkCore.ValueGeneration;
using MongoDB.Driver;
namespace Blueshift.EntityFrameworkCore.MongoDB.Adapter.Update
{
/// <summary>
/// Base class for generating <see cref="WriteModel{TEntity}"/> instances.
/// </summary>
/// <typeparam name="TEntity">The type of entity to write.</typeparam>
public abstract class MongoDbWriteModelFactory<TEntity> : IMongoDbWriteModelFactory<TEntity>
{
private static readonly MethodInfo GenericEqMethodInfo = MethodHelper
.GetGenericMethodDefinition<FilterDefinitionBuilder<TEntity>, object>(
filterDefinitionBuilder => filterDefinitionBuilder.Eq(
(Expression<Func<TEntity, object>>) null,
null));
private readonly IValueGeneratorSelector _valueGeneratorSelector;
private readonly IEnumerable<IProperty> _keyProperties;
private readonly IEnumerable<IProperty> _dbGeneratedProperties;
private readonly IEnumerable<IProperty> _concurrencyProperties;
/// <summary>
/// Initializes a new instance of the <see cref="MongoDbWriteModelFactory{TEntity}"/> class.
/// </summary>
/// <param name="valueGeneratorSelector">The <see cref="IValueGeneratorSelector"/> to use for populating concurrency tokens.</param>
/// <param name="entityType">The <see cref="IEntityType"/> for which this <see cref="MongoDbWriteModelFactory{TDocument}"/> will be used.</param>
protected MongoDbWriteModelFactory(
[NotNull] IValueGeneratorSelector valueGeneratorSelector,
[NotNull] IEntityType entityType)
{
_valueGeneratorSelector = Check.NotNull(valueGeneratorSelector, nameof(valueGeneratorSelector));
_keyProperties = Check.NotNull(entityType, nameof(entityType)).FindPrimaryKey().Properties;
_dbGeneratedProperties = entityType
.GetProperties()
.Where(property => property.ValueGenerated == ValueGenerated.OnAddOrUpdate)
.ToList();
_concurrencyProperties = _dbGeneratedProperties
.Where(property => property.IsConcurrencyToken)
.ToList();
}
/// <summary>
/// Converts an <see cref="IUpdateEntry"/> instance to a <see cref="WriteModel{TEntity}"/> instance.
/// </summary>
/// <param name="updateEntry">The <see cref="IUpdateEntry"/> entry to convert.</param>
/// <returns>A new <see cref="WriteModel{TEntity}"/> that contains the updates in <see cref="IUpdateEntry"/>.</returns>
public abstract WriteModel<TEntity> CreateWriteModel(IUpdateEntry updateEntry);
/// <summary>
/// Generates a <see cref="FilterDefinition{TEntity}"/> for <paramref name="updateEntry"/>.
/// </summary>
/// <param name="updateEntry">The <see cref="IUpdateEntry"/> for the document being updated.</param>
/// <returns>A new <see cref="FilterDefinition{TEntity}"/> that can matches the document in <paramref name="updateEntry"/>.</returns>
protected FilterDefinition<TEntity> GetLookupFilter([NotNull] IUpdateEntry updateEntry)
{
IEnumerable<IProperty> lookupProperties =
Check.NotNull(updateEntry, nameof(updateEntry)).EntityState == EntityState.Added
? _keyProperties
: _keyProperties.Concat(_concurrencyProperties);
IList<FilterDefinition<TEntity>> filterDefinitions = lookupProperties
.Select(property => GetPropertyFilterDefinition(
property,
property.IsConcurrencyToken
? updateEntry.GetOriginalValue(property)
: updateEntry.GetCurrentValue(property)))
.DefaultIfEmpty(Builders<TEntity>.Filter.Empty)
.ToList();
return filterDefinitions.Count > 1
? Builders<TEntity>.Filter.And(filterDefinitions)
: filterDefinitions[0];
}
/// <summary>
/// Updates the database-generated properties for <paramref name="internalEntityEntry"/>.
/// </summary>
/// <param name="internalEntityEntry">The <see cref="IUpdateEntry"/> the <see cref="IUpdateEntry"/> representing the document being updated.</param>
protected void UpdateDbGeneratedProperties(InternalEntityEntry internalEntityEntry)
{
var entityEntry = internalEntityEntry.ToEntityEntry();
foreach (IProperty property in _dbGeneratedProperties)
{
ValueGenerator valueGenerator = _valueGeneratorSelector.Select(property, internalEntityEntry.EntityType);
object dbGeneratedValue = valueGenerator.Next(entityEntry);
internalEntityEntry.SetProperty(property, dbGeneratedValue, true);
property.GetSetter().SetClrValue(internalEntityEntry.Entity, dbGeneratedValue);
}
}
private FilterDefinition<TEntity> GetPropertyFilterDefinition(
IPropertyBase property,
object propertyValue)
{
ParameterExpression parameterExpression = Expression.Parameter(typeof(TEntity), name: "entity");
LambdaExpression lambdaExpression = Expression.Lambda(
Expression.MakeMemberAccess(parameterExpression, property.PropertyInfo),
parameterExpression);
return (FilterDefinition<TEntity>)GenericEqMethodInfo
.MakeGenericMethod(property.ClrType)
.Invoke(Builders<TEntity>.Filter, new[] { lambdaExpression, propertyValue });
}
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Update/MongoDbWriteModelFactoryCache.cs
================================================
using System;
using System.Collections.Concurrent;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Utilities;
using MongoDB.Driver;
namespace Blueshift.EntityFrameworkCore.MongoDB.Adapter.Update
{
/// <summary>
/// Caches <see cref="IMongoDbWriteModelFactory{TEntity}"/> instances.
/// </summary>
public class MongoDbWriteModelFactoryCache : IMongoDbWriteModelFactoryCache
{
private readonly ConcurrentDictionary<CacheKey, object> _cache
= new ConcurrentDictionary<CacheKey, object>();
/// <summary>
/// Returns a cached or newly created instance of <see cref="IMongoDbWriteModelFactory{TEntity}"/> for the given
/// <paramref name="entityType"/> and <paramref name="entityState"/>.
/// </summary>
/// <typeparam name="TEntity">The type of entity being written.</typeparam>
/// <param name="entityType">The <see cref="IEntityType"/> that contains the entity metadata.</param>
/// <param name="entityState">The <see cref="EntityState"/> describing the type of <see cref="WriteModel{TEntity}"/>
/// that returned the factory will produce.</param>
/// <param name="factoryFunc">A <see cref="Func{IEntityType, EntityState, IMongoDbWriteModelFactory}"/> that can
/// be used to create a new factory instance if one has not previously been cached.</param>
/// <returns>A new or cached instance of <see cref="IMongoDbWriteModelFactory{TEntity}"/>.</returns>
public IMongoDbWriteModelFactory<TEntity> GetOrAdd<TEntity>(
IEntityType entityType,
EntityState entityState,
Func<IEntityType, EntityState, IMongoDbWriteModelFactory<TEntity>> factoryFunc)
=> _cache.GetOrAdd(
new CacheKey(
Check.NotNull(entityType, nameof(entityType)),
entityState,
Check.NotNull(factoryFunc, nameof(factoryFunc))),
cacheKey => cacheKey.FactoryFunc(entityType, entityState))
as IMongoDbWriteModelFactory<TEntity>;
private struct CacheKey : IEquatable<CacheKey>
{
private readonly IEntityType _entityType;
private readonly EntityState _entityState;
public CacheKey(
IEntityType entityType,
EntityState entityState,
Func<IEntityType, EntityState, object> factoryFunc)
{
_entityType = entityType;
_entityState = entityState;
FactoryFunc = factoryFunc;
}
public Func<IEntityType, EntityState, object> FactoryFunc { get; }
public override bool Equals(object obj)
=> Equals((CacheKey)obj);
public bool Equals(CacheKey other)
=> Equals(_entityType, other._entityType)
&& Equals(_entityState, other._entityState);
public override int GetHashCode()
{
unchecked
{
return (_entityType.GetHashCode() * 492) ^ _entityState.GetHashCode();
}
}
}
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Update/MongoDbWriteModelFactorySelector.cs
================================================
using System;
using JetBrains.Annotations;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Metadata.Internal;
using Microsoft.EntityFrameworkCore.Update;
using Microsoft.EntityFrameworkCore.Utilities;
using Microsoft.EntityFrameworkCore.ValueGeneration;
using MongoDB.Driver;
namespace Blueshift.EntityFrameworkCore.MongoDB.Adapter.Update
{
/// <summary>
/// Selects an instance of <see cref="IMongoDbWriteModelFactory{TEntity}"/> for a given <see cref="EntityType"/>.
/// </summary>
public class MongoDbWriteModelFactorySelector : IMongoDbWriteModelFactorySelector
{
private readonly IValueGeneratorSelector _valueGeneratorSelector;
private readonly IMongoDbWriteModelFactoryCache _mongoDbWriteModelFactoryCache;
/// <summary>
/// Initializes a new instance of the <see cref="IMongoDbWriteModelFactorySelector"/> class.
/// </summary>
/// <param name="valueGeneratorSelector">The <see cref="IValueGeneratorSelector"/> to use for populating concurrency tokens.</param>
/// <param name="mongoDbWriteModelFactoryCache">A <see cref="IMongoDbWriteModelFactoryCache"/> that can be used to cache the
/// factory instances returned by this <see cref="IMongoDbWriteModelFactorySelector"/>.</param>
public MongoDbWriteModelFactorySelector(
[NotNull] IValueGeneratorSelector valueGeneratorSelector,
[NotNull] IMongoDbWriteModelFactoryCache mongoDbWriteModelFactoryCache)
{
_valueGeneratorSelector = Check.NotNull(valueGeneratorSelector, nameof(valueGeneratorSelector));
_mongoDbWriteModelFactoryCache = Check.NotNull(mongoDbWriteModelFactoryCache, nameof(mongoDbWriteModelFactoryCache));
}
/// <summary>
/// Select an <see cref="IMongoDbWriteModelFactory{TEntity}"/> instance for the given <paramref name="updateEntry"/>.
/// </summary>
/// <param name="updateEntry">The <see cref="IUpdateEntry"/> that the write model factory will be used to translate.</param>
/// <typeparam name="TEntity">The type of entity for which to create a <see cref="IMongoDbWriteModelFactory{TEntity}"/> instance.</typeparam>
/// <returns>An instance of <see cref="IMongoDbWriteModelFactory{TEntity}"/> that can be used to convert <see cref="IUpdateEntry"/>
/// instances to <see cref="WriteModel{TDocument}"/> instances.</returns>
public IMongoDbWriteModelFactory<TEntity> Select<TEntity>(IUpdateEntry updateEntry)
=> _mongoDbWriteModelFactoryCache.GetOrAdd(
Check.NotNull(updateEntry, nameof(updateEntry)).EntityType,
updateEntry.EntityState,
Create<TEntity>);
private IMongoDbWriteModelFactory<TEntity> Create<TEntity>(
[NotNull] IEntityType entityType,
EntityState entityState)
{
Check.NotNull(entityType, nameof(entityType));
if (entityState != EntityState.Added &&
entityState != EntityState.Modified &&
entityState != EntityState.Unchanged &&
entityState != EntityState.Deleted)
{
throw new InvalidOperationException($"The value provided for entityState must be Added, Modified, Unchanged, or Deleted, but was {entityState}.");
}
IMongoDbWriteModelFactory<TEntity> mongoDbWriteModelFactory;
switch (entityState)
{
case EntityState.Added:
mongoDbWriteModelFactory = new InsertOneModelFactory<TEntity>(_valueGeneratorSelector, entityType);
break;
case EntityState.Deleted:
mongoDbWriteModelFactory = new DeleteOneModelFactory<TEntity>(_valueGeneratorSelector, entityType);
break;
default:
mongoDbWriteModelFactory = new ReplaceOneModelFactory<TEntity>(_valueGeneratorSelector, entityType);
break;
}
return mongoDbWriteModelFactory;
}
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Update/ReplaceOneModelFactory.cs
================================================
using JetBrains.Annotations;
using Microsoft.EntityFrameworkCore.ChangeTracking.Internal;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Update;
using Microsoft.EntityFrameworkCore.Utilities;
using Microsoft.EntityFrameworkCore.ValueGeneration;
using MongoDB.Driver;
namespace Blueshift.EntityFrameworkCore.MongoDB.Adapter.Update
{
/// <inheritdoc />
/// <summary>
/// Creates <see cref="UpdateOneModel{TEntity}"/> from a given <see cref="IUpdateEntry"/>.
/// </summary>
/// <typeparam name="TEntity">The type of entity being added.</typeparam>
public class ReplaceOneModelFactory<TEntity> : MongoDbWriteModelFactory<TEntity>
{
/// <inheritdoc />
/// <summary>
/// Initializes a new instance of the <see cref="ReplaceOneModelFactory{TEntity}" /> class.
/// </summary>
/// <param name="valueGeneratorSelector">The <see cref="IValueGeneratorSelector" /> to use for populating
/// concurrency tokens.</param>
/// <param name="entityType">The <see cref="IEntityType" /> for which this
/// <see cref="ReplaceOneModelFactory{TEntity}" /> will be used.</param>
public ReplaceOneModelFactory(
[NotNull] IValueGeneratorSelector valueGeneratorSelector,
[NotNull] IEntityType entityType)
: base(
Check.NotNull(valueGeneratorSelector, nameof(valueGeneratorSelector)),
Check.NotNull(entityType, nameof(entityType)))
{
}
/// <inheritdoc />
/// <summary>
/// Creates an <see cref="UpdateOneModel{TEntity}"/> that maps the given <paramref name="updateEntry"/>.
/// </summary>
/// <param name="updateEntry">The <see cref="IUpdateEntry"/> to map.</param>
/// <returns>A new <see cref="UpdateOneModel{TEntity}"/> containing the inserted values represented
/// by <paramref name="updateEntry"/>.</returns>
public override WriteModel<TEntity> CreateWriteModel(IUpdateEntry updateEntry)
{
InternalEntityEntry internalEntityEntry = Check.Is<InternalEntityEntry>(updateEntry, nameof(updateEntry));
UpdateDbGeneratedProperties(internalEntityEntry);
return new ReplaceOneModel<TEntity>(
GetLookupFilter(updateEntry),
(TEntity)internalEntityEntry.Entity);
}
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Annotations/DenormalizeAttribute.cs
================================================
using System;
namespace Blueshift.EntityFrameworkCore.MongoDB.Annotations
{
/// <summary>
/// Declares that a member of a navigation property should be denormalized when serializing the property.
/// </summary>
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property)]
public class DenormalizeAttribute : Attribute
{
/// <summary>
/// Initializes a new instance of the <see cref="DenormalizeAttribute"/> class.
/// </summary>
/// <param name="memberNames">The names of sub-document members to denormalize when serializing the parent document.</param>
public DenormalizeAttribute(params string[] memberNames)
{
MemberNames = memberNames ?? new string[0];
}
/// <summary>
/// The name of the member to denormalize.
/// </summary>
public string[] MemberNames { get; }
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Annotations/MongoCollectionAttribute.cs
================================================
using System;
using JetBrains.Annotations;
using Microsoft.EntityFrameworkCore.Metadata.Internal;
using Microsoft.EntityFrameworkCore.Utilities;
namespace Blueshift.EntityFrameworkCore.MongoDB.Annotations
{
/// <summary>
/// When applied to an entity class, sets the name of MongoDB collection name used to store instances of the entity.
/// </summary>
[AttributeUsage(AttributeTargets.Class)]
public class MongoCollectionAttribute : Attribute
{
/// <summary>
/// Initializes a new instance of the <see cref="MongoCollectionAttribute"/> class.
/// </summary>
/// <param name="collectionName">The MongoDb database name to use with the <see cref="Model"/>.</param>
public MongoCollectionAttribute([NotNull] string collectionName)
{
CollectionName = Check.NotEmpty(collectionName, nameof(collectionName));
}
/// <summary>
/// The MongoDb database name to use with the <see cref="Model"/>.
/// </summary>
public virtual string CollectionName { get; }
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Annotations/MongoDatabaseAttribute.cs
================================================
using System;
using JetBrains.Annotations;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Internal;
using Microsoft.EntityFrameworkCore.Utilities;
namespace Blueshift.EntityFrameworkCore.MongoDB.Annotations
{
/// <summary>
/// When applied to a <see cref="DbContext"/>, sets the database name to use with the context's <see cref="Model"/>.
/// </summary>
[AttributeUsage(AttributeTargets.Class)]
public class MongoDatabaseAttribute : Attribute
{
/// <summary>
/// Initializes a new instance of the <see cref="MongoDatabaseAttribute"/> class.
/// </summary>
/// <param name="database">The MongoDb database name to use with the <see cref="Model"/>.</param>
public MongoDatabaseAttribute([NotNull] string database)
{
Database = Check.NotEmpty(database, nameof(database));
}
/// <summary>
/// The MongoDb database name to use with the <see cref="Model"/>.
/// </summary>
public virtual string Database { get; }
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Blueshift.EntityFrameworkCore.MongoDB.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>$(BuildFrameworks)</TargetFrameworks>
<Product>Blueshift MongoDb Provider for EntityFrameworkCore</Product>
<Description>Blueshift Software MongoDb Provider for Microsoft EntityFramework Core</Description>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
<ItemGroup>
<Compile Include="..\Shared\Check.cs" Link="Check.cs" />
<Compile Include="..\Shared\CodeAnnotations.cs" Link="CodeAnnotations.cs" />
<Compile Include="..\Shared\MemberInfoExtensions.cs" Link="MemberInfoExtensions.cs" />
<Compile Include="..\Shared\PropertyInfoExtensions.cs" Link="PropertyInfoExtensions.cs" />
<Compile Include="..\Shared\SharedTypeExtensions.cs" Link="SharedTypeExtensions.cs" />
<Compile Include="..\Shared\StringBuilderExtensions.cs" Link="StringBuilderExtensions.cs" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="$(MicrosoftEntityFrameworkCorePackageVersion)" NoWarn="KRB4002" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="$(MicrosoftExtensionsConfigurationPackageVersion)" NoWarn="KRB4002" />
<PackageReference Include="MongoDB.Driver" Version="$(MongoDBDriverPackageVersion)" NoWarn="KRB4002" />
</ItemGroup>
<ItemGroup>
<Compile Update="Properties\DocumentDbStrings.cs">
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
<DependentUpon>DocumentDbStrings.tt</DependentUpon>
</Compile>
<Compile Update="Properties\DocumentDbStrings.Designer.cs">
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
<DependentUpon>DocumentDbStrings.resx</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="Properties\DocumentDbStrings.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>DocumentDbStrings.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<None Update="Properties\DocumentDbStrings.tt">
<Generator>TextTemplatingFileGenerator</Generator>
<LastGenOutput>DocumentDbStrings.cs</LastGenOutput>
</None>
</ItemGroup>
<ItemGroup>
<Service Include="{508349b6-6b84-4df5-91f0-309beebad82d}" />
</ItemGroup>
</Project>
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/ChangeTracking/MongoDbInternalEntityEntryFactory.cs
================================================
using System.Linq;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.ChangeTracking.Internal;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Metadata.Internal;
using Microsoft.EntityFrameworkCore.Storage;
namespace Blueshift.EntityFrameworkCore.MongoDB.ChangeTracking
{
/// <inheritdoc />
public class MongoDbInternalEntityEntryFactory : InternalEntityEntryFactory
{
/// <inheritdoc />
public override InternalEntityEntry Create(
IStateManager stateManager,
IEntityType entityType,
object entity,
in ValueBuffer valueBuffer)
=> base.Create(
stateManager,
entityType,
entity,
valueBuffer.IsEmpty
? CreateValueBuffer(entityType, entity)
: valueBuffer);
/// <inheritdoc />
public override InternalEntityEntry Create(
IStateManager stateManager,
IEntityType entityType,
object entity)
=> Create(stateManager, entityType, entity, ValueBuffer.Empty);
private ValueBuffer CreateValueBuffer(IEntityType entityType, object entity)
{
object[] values = new object[entityType.PropertyCount()];
foreach (IProperty property in entityType.GetProperties())
{
values[property.GetIndex()] = GetPropertyValue(entity, property);
}
return new ValueBuffer(values);
}
private object GetPropertyValue(object entity, IProperty property)
{
if (property.IsShadowProperty && property.IsForeignKey())
{
IForeignKey foreignKey = property.AsProperty().ForeignKeys.First();
INavigation navigationProperty = property.DeclaringEntityType == foreignKey.PrincipalEntityType
&& !foreignKey.IsSelfPrimaryKeyReferencing()
? foreignKey.PrincipalToDependent
: foreignKey.DependentToPrincipal;
if (navigationProperty != null)
{
entity = navigationProperty.GetGetter().GetClrValue(entity);
IEntityType targetEntityType = navigationProperty.GetTargetType();
property = targetEntityType.FindPrimaryKey().Properties.Single();
}
else
{
entity = null;
}
}
return entity == null
? null
: property.IsShadowProperty
? entity.GetHashCode()
: property.GetGetter().GetClrValue(entity);
}
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/DbContextOptionsExtensions.cs
================================================
//using System;
//using System.Collections.Generic;
//using System.Linq;
//using JetBrains.Annotations;
//using Microsoft.EntityFrameworkCore.Infrastructure;
//using Microsoft.EntityFrameworkCore.Utilities;
//// ReSharper disable once CheckNamespace
//namespace Blueshift.EntityFrameworkCore.MongoDB
//{
// /// <summary>
// /// Provides a set of extension methods for instances of the <see cref="IDbContextOptions"/> interface.
// /// </summary>
// public static class DbContextOptionsExtensions
// {
// /// <summary>
// /// Extracts a single instance of the <typeparamref name="TExtension"/> from this <paramref name="dbContextOptions"/>.
// /// </summary>
// /// <typeparam name="TExtension">The type of <see cref="IDbContextOptionsExtension"/> to be extracted.</typeparam>
// /// <param name="dbContextOptions">An instance of <see cref="IDbContextOptions"/> to search for the given extension.</param>
// /// <returns>The single instance of <typeparamref name="TExtension"/> that was found.</returns>
// /// <exception cref="InvalidOperationException">
// /// Thrown if no instance of the <typeparamref name="TExtension"/> could be found, or if more than one was found.
// /// </exception>
// public static TExtension Extract<TExtension>([NotNull] this IDbContextOptions dbContextOptions)
// where TExtension : IDbContextOptionsExtension
// {
// Check.NotNull(dbContextOptions, nameof(dbContextOptions));
// IList<TExtension> extensions = dbContextOptions.Extensions
// .OfType<TExtension>()
// .ToList();
// if (extensions.Count == 0)
// {
// throw new InvalidOperationException($"No provider has been configured with a {nameof(TExtension)} extension.");
// }
// if (extensions.Count > 1)
// {
// throw new InvalidOperationException($"Multiple providers have been configured with a {nameof(TExtension)} extension.");
// }
// return extensions[index: 0];
// }
// }
//}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/DependencyInjection/MongoDbEfServiceCollectionExtensions.cs
================================================
using System.ComponentModel;
using System.Reflection;
using Blueshift.EntityFrameworkCore.MongoDB.Adapter;
using Blueshift.EntityFrameworkCore.MongoDB.Infrastructure;
using JetBrains.Annotations;
using Microsoft.EntityFrameworkCore.Utilities;
using Microsoft.Extensions.DependencyInjection;
using MongoDB.Bson;
// ReSharper disable once CheckNamespace
namespace Blueshift.EntityFrameworkCore.MongoDB.DependencyInjection
{
/// <summary>
/// Extends <see cref="IServiceCollection"/> with methods for use with the MongoDb EntityFrameworkCore provider.
/// </summary>
public static class MongoDbEfServiceCollectionExtensions
{
static MongoDbEfServiceCollectionExtensions()
{
if (!typeof(ObjectId).GetTypeInfo().IsDefined(typeof(TypeConverterAttribute)))
{
TypeDescriptor.AddAttributes(typeof(ObjectId), new TypeConverterAttribute(typeof(ObjectIdTypeConverter)));
}
EntityFrameworkConventionPack.Register(type => true);
}
/// <summary>
/// Populates the given <paramref name="serviceCollection"/> instance with the service dependencies for
/// the MongoDb provider for EntityFrameworkCore.
/// </summary>
/// <param name="serviceCollection">The <see cref="IServiceCollection"/> instance of populate.</param>
/// <returns>The <paramref name="serviceCollection"/> populated with the MongoDb EntityFrameworkCore dependencies.</returns>
public static IServiceCollection AddEntityFrameworkMongoDb([NotNull] this IServiceCollection serviceCollection)
{
Check.NotNull(serviceCollection, nameof(serviceCollection));
var entityFrameworkServicesBuilder = new EntityFrameworkMongoDbServicesBuilder(serviceCollection);
entityFrameworkServicesBuilder.TryAddCoreServices();
return serviceCollection;
}
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Infrastructure/EntityFrameworkMongoDbServicesBuilder.cs
================================================
using System;
using System.Collections.Generic;
using Blueshift.EntityFrameworkCore.MongoDB.Adapter.Update;
using Blueshift.EntityFrameworkCore.MongoDB.Metadata.Builders;
using Blueshift.EntityFrameworkCore.MongoDB.Query;
using Blueshift.EntityFrameworkCore.MongoDB.Query.Expressions;
using Blueshift.EntityFrameworkCore.MongoDB.Query.ExpressionVisitors;
using Blueshift.EntityFrameworkCore.MongoDB.Storage;
using Blueshift.EntityFrameworkCore.MongoDB.ValueGeneration;
using JetBrains.Annotations;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal;
using Microsoft.EntityFrameworkCore.Query;
using Microsoft.EntityFrameworkCore.Query.ExpressionVisitors;
using Microsoft.EntityFrameworkCore.Query.ExpressionVisitors.Internal;
using Microsoft.EntityFrameworkCore.Storage;
using Microsoft.EntityFrameworkCore.ValueGeneration;
using Microsoft.Extensions.DependencyInjection;
using MongoDB.Driver;
namespace Blueshift.EntityFrameworkCore.MongoDB.Infrastructure
{
/// <inheritdoc />
/// <summary>
/// A builder API that populates an <see cref="IServiceCollection" /> with a set of EntityFrameworkCore
/// provider dependencies for MongoDb.
/// </summary>
public class EntityFrameworkMongoDbServicesBuilder : EntityFrameworkServicesBuilder
{
private static readonly IDictionary<Type, ServiceCharacteristics> RelationalServices
= new Dictionary<Type, ServiceCharacteristics>
{
{ typeof(IMongoClient), new ServiceCharacteristics(ServiceLifetime.Scoped) },
{ typeof(IMongoDbConnection), new ServiceCharacteristics(ServiceLifetime.Scoped) },
{ typeof(IMongoDbTypeMappingSource), new ServiceCharacteristics(ServiceLifetime.Singleton) },
{ typeof(MongoDbEntityQueryModelVisitorDependencies), new ServiceCharacteristics(ServiceLifetime.Scoped) },
{ typeof(MongoDbConventionSetBuilderDependencies), new ServiceCharacteristics(ServiceLifetime.Scoped) }
};
/// <summary>
/// Initializes a new instance of the <see cref="EntityFrameworkMongoDbServicesBuilder"/> class.
/// </summary>
/// <param name="serviceCollection">The <see cref="IServiceCollection"/> instance to populate.</param>
public EntityFrameworkMongoDbServicesBuilder([NotNull] IServiceCollection serviceCollection) : base(serviceCollection)
{
}
/// <summary>
/// This API supports the Entity Framework Core infrastructure and is not intended to be used directly from your code.
/// This API may change or be removed in future releases.
/// </summary>
protected override ServiceCharacteristics GetServiceCharacteristics(Type serviceType)
=> RelationalServices.TryGetValue(serviceType, out ServiceCharacteristics characteristics)
? characteristics
: base.GetServiceCharacteristics(serviceType);
/// <summary>
/// Registers default implementations of all services not already registered by the provider. Database providers must call
/// this method as the last step of service registration--that is, after all provider services have been registered.
/// </summary>
/// <returns>This builder, such that further calls can be chained.</returns>
public override EntityFrameworkServicesBuilder TryAddCoreServices()
{
TryAdd<IDatabaseProvider, DatabaseProvider<MongoDbOptionsExtension>>();
TryAdd<IModelValidator, MongoDbModelValidator>();
TryAdd<ITypeMappingSource>(serviceProvider => serviceProvider.GetRequiredService<IMongoDbTypeMappingSource>());
TryAdd<IMongoDbTypeMappingSource, MongoDbTypeMappingSource>();
TryAdd<IDatabase, MongoDbDatabase>();
TryAdd<IDatabaseCreator, MongoDbDatabaseCreator>();
TryAdd<IValueGeneratorSelector, MongoDbValueGeneratorSelector>();
TryAdd<IConventionSetBuilder, MongoDbConventionSetBuilder>();
TryAdd<IQueryContextFactory, MongoDbQueryContextFactory>();
TryAdd<IEntityQueryableExpressionVisitorFactory, MongoDbEntityQueryableExpressionVisitorFactory>();
TryAdd<IEntityQueryModelVisitorFactory, MongoDbEntityQueryModelVisitorFactory>();
TryAdd<IMemberAccessBindingExpressionVisitorFactory, MongoDbMemberAccessBindingExpressionVisitorFactory>();
TryAdd<INavigationRewritingExpressionVisitorFactory, DocumentNavigationRewritingExpressionVisitorFactory>();
TryAddProviderSpecificServices(serviceCollectionMap =>
{
serviceCollectionMap.TryAddScoped(serviceProvider =>
{
MongoDbOptionsExtension extension = serviceProvider
.GetRequiredService<IDbContextOptions>()
.FindExtension<MongoDbOptionsExtension>();
return extension?.MongoClient ?? new MongoClient();
});
serviceCollectionMap.TryAddScoped<IMongoDbConnection, MongoDbConnection>();
serviceCollectionMap.TryAddScoped<IMongoDbDenormalizedCollectionCompensatingVisitorFactory, MongoDbDenormalizedCollectionCompensatingVisitorFactory>();
serviceCollectionMap.TryAddScoped<IDocumentQueryExpressionFactory, MongoDbDocumentQueryExpressionFactory>();
serviceCollectionMap.TryAddScoped<IMongoDbWriteModelFactoryCache, MongoDbWriteModelFactoryCache>();
serviceCollectionMap.TryAddScoped<IMongoDbWriteModelFactorySelector, MongoDbWriteModelFactorySelector>();
serviceCollectionMap.TryAddScoped<IEntityLoadInfoFactory, EntityLoadInfoFactory>();
serviceCollectionMap.TryAddScoped<IValueBufferFactory, ValueBufferFactory>();
});
ServiceCollectionMap.GetInfrastructure()
.AddDependencyScoped<MongoDbConventionSetBuilderDependencies>()
.AddDependencyScoped<MongoDbEntityQueryModelVisitorDependencies>();
return base.TryAddCoreServices();
}
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Infrastructure/MongoDbContextOptionsBuilder.cs
================================================
using JetBrains.Annotations;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Utilities;
// ReSharper disable once CheckNamespace
namespace Blueshift.EntityFrameworkCore.MongoDB.Infrastructure
{
/// <summary>
/// <para>
/// Allows MongoDb-specific configuration to be performed on <see cref="DbContextOptions" />.
/// </para>
/// <para>
/// Instances of this class are returned from a call to
/// <see cref="MongoDbContextOptionsBuilderExtensions.UseMongoDb(DbContextOptionsBuilder, string, System.Action{MongoDbContextOptionsBuilder})" />
/// and it is not designed to be directly constructed in your application code.
/// </para>
/// </summary>
public class MongoDbContextOptionsBuilder
{
/// <summary>
/// Initializes a new instance of the <see cref="MongoDbContextOptionsBuilder"/> class.
/// </summary>
/// <param name="optionsBuilder">The core <see cref="DbContextOptionsBuilder"/> class.</param>
public MongoDbContextOptionsBuilder([NotNull] DbContextOptionsBuilder optionsBuilder)
{
OptionsBuilder = Check.NotNull(optionsBuilder, nameof(optionsBuilder));
}
/// <summary>
/// Gets the core <see cref="DbContextOptionsBuilder"/> that supplied to the constructor.
/// </summary>
protected virtual DbContextOptionsBuilder OptionsBuilder { get; }
/// <summary>
/// Sets the name of the MongoDB database to use with the <see cref="DbContext"/> being configured.
/// </summary>
/// <param name="databaseName">The name of the MongoDB database instance to use with the current <see cref="DbContext"/>.</param>
/// <returns>This <see cref="MongoDbOptionsExtension"/>, so that calls can be chained.</returns>
public MongoDbContextOptionsBuilder UseDatabase([NotNull] string databaseName)
{
Check.NotEmpty(databaseName, nameof(databaseName));
MongoDbOptionsExtension extension = CloneExtension();
extension.DatabaseName = databaseName;
((IDbContextOptionsBuilderInfrastructure)OptionsBuilder).AddOrUpdateExtension(extension);
return this;
}
/// <summary>
/// Clones the <see cref="MongoDbOptionsExtension"/> used to configure this builder.
/// </summary>
/// <returns>A cloned instance of this builder's <see cref="MongoDbOptionsExtension"/>.</returns>
protected virtual MongoDbOptionsExtension CloneExtension()
=> new MongoDbOptionsExtension(OptionsBuilder.Options.GetExtension<MongoDbOptionsExtension>());
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Infrastructure/MongoDbContextOptionsBuilderExtensions.cs
================================================
using System;
using JetBrains.Annotations;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Utilities;
using MongoDB.Driver;
// ReSharper disable once CheckNamespace
namespace Blueshift.EntityFrameworkCore.MongoDB.Infrastructure
{
/// <summary>
/// MongoDb-specific extension methods for <see cref="DbContextOptionsBuilder" />.
/// </summary>
public static class MongoDbContextOptionsBuilderExtensions
{
/// <summary>
/// Configures the context to connect to a MongoDb instance.
/// </summary>
/// <param name="optionsBuilder">The builder being used to configure the context.</param>
/// <param name="connectionString">The connection string of the MongoDb instance to connect to.</param>
/// <param name="mongoDbOptionsAction">An optional action to allow additional MongoDb-specific configuration.</param>
/// <returns> The options builder so that further configuration can be chained. </returns>
public static DbContextOptionsBuilder UseMongoDb(
[NotNull] this DbContextOptionsBuilder optionsBuilder,
[NotNull] string connectionString,
[CanBeNull] Action<MongoDbContextOptionsBuilder> mongoDbOptionsAction = null)
{
Check.NotEmpty(connectionString, nameof(connectionString));
return SetupMongoDb(Check.NotNull(optionsBuilder, nameof(optionsBuilder)),
extension => extension.ConnectionString = connectionString,
mongoDbOptionsAction);
}
/// <summary>
/// Configures the context to connect to a MongoDb instance.
/// </summary>
/// <param name="optionsBuilder">The builder being used to configure the context.</param>
/// <param name="mongoClient">The <see cref="IMongoClient"/> to use when connecting to MongoDb.</param>
/// <param name="mongoDbOptionsAction">An optional action to allow additional MongoDb-specific configuration.</param>
/// <returns> The options builder so that further configuration can be chained. </returns>
public static DbContextOptionsBuilder UseMongoDb(
[NotNull] this DbContextOptionsBuilder optionsBuilder,
[NotNull] IMongoClient mongoClient,
[CanBeNull] Action<MongoDbContextOptionsBuilder> mongoDbOptionsAction = null)
{
Check.NotNull(mongoClient, nameof(mongoClient));
return SetupMongoDb(Check.NotNull(optionsBuilder, nameof(optionsBuilder)),
extension => extension.MongoClient = mongoClient,
mongoDbOptionsAction);
}
/// <summary>
/// Configures the context to connect to a MongoDb instance.
/// </summary>
/// <param name="optionsBuilder">The builder being used to configure the context.</param>
/// <param name="mongoClientSettings">The <see cref="MongoClientSettings"/> to use when connecting to MongoDb.</param>
/// <param name="mongoDbOptionsAction">An optional action to allow additional MongoDb-specific configuration.</param>
/// <returns> The options builder so that further configuration can be chained. </returns>
public static DbContextOptionsBuilder UseMongoDb(
[NotNull] this DbContextOptionsBuilder optionsBuilder,
[NotNull] MongoClientSettings mongoClientSettings,
[CanBeNull] Action<MongoDbContextOptionsBuilder> mongoDbOptionsAction = null)
{
Check.NotNull(mongoClientSettings, nameof(mongoClientSettings));
return SetupMongoDb(Check.NotNull(optionsBuilder, nameof(optionsBuilder)),
extension => extension.MongoClientSettings = mongoClientSettings,
mongoDbOptionsAction);
}
/// <summary>
/// Configures the context to connect to a MongoDb instance.
/// </summary>
/// <param name="optionsBuilder">The builder being used to configure the context.</param>
/// <param name="mongoUrl">The <see cref="MongoUrl"/> to use to connect to MongoDb.</param>
/// <param name="mongoDbOptionsAction">An optional action to allow additional MongoDb-specific configuration.</param>
/// <returns> The options builder so that further configuration can be chained. </returns>
public static DbContextOptionsBuilder UseMongoDb(
[NotNull] this DbContextOptionsBuilder optionsBuilder,
[NotNull] MongoUrl mongoUrl,
[CanBeNull] Action<MongoDbContextOptionsBuilder> mongoDbOptionsAction = null)
{
Check.NotNull(mongoUrl, nameof(mongoUrl));
return SetupMongoDb(Check.NotNull(optionsBuilder, nameof(optionsBuilder)),
extension => extension.MongoUrl = mongoUrl,
mongoDbOptionsAction);
}
private static DbContextOptionsBuilder SetupMongoDb(
[NotNull] DbContextOptionsBuilder optionsBuilder,
[NotNull] Action<MongoDbOptionsExtension> mongoDbOptionsExtensionAction,
[CanBeNull] Action<MongoDbContextOptionsBuilder> mongoDbOptionsAction)
{
MongoDbOptionsExtension extension = GetOrCreateExtension(optionsBuilder);
mongoDbOptionsExtensionAction(extension);
((IDbContextOptionsBuilderInfrastructure)optionsBuilder).AddOrUpdateExtension(extension);
ConfigureWarnings(optionsBuilder);
mongoDbOptionsAction?.Invoke(new MongoDbContextOptionsBuilder(optionsBuilder));
return optionsBuilder;
}
private static MongoDbOptionsExtension GetOrCreateExtension([NotNull] DbContextOptionsBuilder optionsBuilder)
{
var existing = optionsBuilder.Options.FindExtension<MongoDbOptionsExtension>();
return existing != null
? new MongoDbOptionsExtension(existing)
: new MongoDbOptionsExtension();
}
private static void ConfigureWarnings([NotNull] DbContextOptionsBuilder optionsBuilder)
=> Check.NotNull(optionsBuilder, nameof(optionsBuilder))
.ConfigureWarnings(warningsConfigurationBuilder =>
{
warningsConfigurationBuilder.Default(WarningBehavior.Log);
});
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Infrastructure/MongoDbModelValidator.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using Blueshift.EntityFrameworkCore.MongoDB.Metadata;
using JetBrains.Annotations;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Internal;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Metadata.Internal;
using Microsoft.EntityFrameworkCore.Utilities;
namespace Blueshift.EntityFrameworkCore.MongoDB.Infrastructure
{
/// <inheritdoc />
/// <summary>
/// A validator that enforces rules for all MongoDb provider.
/// </summary>
public class MongoDbModelValidator : ModelValidator
{
/// <inheritdoc />
/// <summary>
/// Initializes a new instance of the <see cref="MongoDbModelValidator"/> class.
/// </summary>
/// <param name="modelValidatorDependencies">Parameter object containing dependencies for this service.</param>
public MongoDbModelValidator(
[NotNull] ModelValidatorDependencies modelValidatorDependencies)
: base(Check.NotNull(modelValidatorDependencies, nameof(modelValidatorDependencies)))
{
}
/// <inheritdoc />
/// <summary>
/// Validates a model, throwing an exception if any errors are found.
/// </summary>
/// <param name="model">The <see cref="Model"/> to validate.</param>
public override void Validate(IModel model)
{
base.Validate(Check.NotNull(model, nameof(model)));
EnsureDistinctCollectionNames(model);
ValidateDerivedTypes(model);
}
/// <inheritdoc />
protected override void ValidateNoShadowKeys(IModel model)
{
Check.NotNull(model, nameof(model));
IEnumerable<IEntityType> nonComplexEntityTypes = model
.GetEntityTypes()
.Where(entityType => entityType.ClrType != null && !entityType.IsOwned());
foreach (var entityType in nonComplexEntityTypes)
{
foreach (var key in entityType.GetDeclaredKeys())
{
if (key.Properties.Any(p => p.IsShadowProperty)
&& key is Key concreteKey
&& ConfigurationSource.Convention.Overrides(concreteKey.GetConfigurationSource())
&& !key.IsPrimaryKey())
{
var referencingFk = key.GetReferencingForeignKeys().FirstOrDefault();
if (referencingFk != null)
{
throw new InvalidOperationException(
CoreStrings.ReferencedShadowKey(
referencingFk.DeclaringEntityType.DisplayName() +
(referencingFk.DependentToPrincipal == null
? ""
: "." + referencingFk.DependentToPrincipal.Name),
entityType.DisplayName() +
(referencingFk.PrincipalToDependent == null
? ""
: "." + referencingFk.PrincipalToDependent.Name),
Property.Format(referencingFk.Properties, includeTypes: true),
Property.Format(entityType.FindPrimaryKey().Properties, includeTypes: true)));
}
}
}
}
}
/// <inheritdoc />
protected override void ValidateOwnership(IModel model)
{
Check.NotNull(model, nameof(model));
IList<IEntityType> ownedEntityTypes = model
.GetEntityTypes()
.Where(entityType => entityType.HasClrType()
? model.ShouldBeOwnedType(entityType.ClrType)
: model.ShouldBeOwnedType(entityType.Name))
.ToList();
foreach (IEntityType entityType in ownedEntityTypes)
{
List<IForeignKey> ownerships = entityType
.GetForeignKeys()
.Where(fk => fk.IsOwnership)
.ToList();
foreach (IForeignKey ownership in ownerships)
{
IForeignKey principalToDependentForeignKey = entityType
.GetDeclaredForeignKeys()
.FirstOrDefault(foreignKey => !foreignKey.IsOwnership
&& foreignKey.PrincipalToDependent != null);
if (principalToDependentForeignKey != null)
{
throw new InvalidOperationException(
CoreStrings.InverseToOwnedType(
principalToDependentForeignKey.PrincipalEntityType.DisplayName(),
principalToDependentForeignKey.PrincipalToDependent.Name,
entityType.DisplayName(),
ownership.PrincipalEntityType.DisplayName()));
}
}
}
}
/// <summary>
/// Ensures that each <see cref="EntityType"/> in the given <paramref name="model"/> has a unique collection name.
/// </summary>
/// <param name="model">The <see cref="Model"/> to validate.</param>
protected virtual void EnsureDistinctCollectionNames([NotNull] IModel model)
{
Check.NotNull(model, nameof(model));
var tables = new HashSet<string>();
var duplicateCollectionNames = model
.GetEntityTypes()
.Where(et => et.BaseType == null)
.Select(entityType => new
{
new MongoDbEntityTypeAnnotations(entityType).CollectionName,
DisplayName = entityType.DisplayName()
})
.Where(tuple => !tables.Add(tuple.CollectionName));
foreach (var tuple in duplicateCollectionNames)
{
throw new InvalidOperationException($"Duplicate collection name \"{tuple.CollectionName}\" defined on entity type \"{tuple.DisplayName}\".");
}
}
/// <summary>
/// Ensures that all entities in the given <paramref name="model"/> have unique discriminators.
/// </summary>
/// <param name="model">The <see cref="Model"/> to validate.</param>
protected virtual void ValidateDerivedTypes([NotNull] IModel model)
{
IEnumerable<IEntityType> derivedTypes = Check.NotNull(model, nameof(model))
.GetEntityTypes()
.Where(entityType => entityType.BaseType != null && entityType.ClrType.IsInstantiable());
var discriminatorSet = new HashSet<Tuple<IEntityType, string>>();
foreach (IEntityType entityType in derivedTypes)
{
ValidateDiscriminator(entityType, discriminatorSet);
}
}
private void ValidateDiscriminator(IEntityType entityType, ISet<Tuple<IEntityType,string>> discriminatorSet)
{
var annotations = new MongoDbEntityTypeAnnotations(entityType);
if (string.IsNullOrWhiteSpace(annotations.Discriminator))
{
throw new InvalidOperationException($"Missing discriminator value for entity type {entityType.DisplayName()}.");
}
if (!discriminatorSet.Add(Tuple.Create(entityType.RootType(), annotations.Discriminator)))
{
throw new InvalidOperationException($"Duplicate discriminator value {annotations.Discriminator} for root entity type {entityType.RootType().DisplayName()} (defined on {entityType.DisplayName()}).");
}
}
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Infrastructure/MongoDbOptionsExtension.cs
================================================
using System.Linq;
using System.Text;
using Blueshift.EntityFrameworkCore.MongoDB.DependencyInjection;
using JetBrains.Annotations;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Utilities;
using Microsoft.Extensions.DependencyInjection;
using MongoDB.Driver;
// ReSharper disable once CheckNamespace
namespace Blueshift.EntityFrameworkCore.MongoDB.Infrastructure
{
/// <summary>
/// This API supports the Entity Framework Core infrastructure and is not intended to be used
/// directly from your code. This API may change or be removed in future releases.
/// </summary>
public class MongoDbOptionsExtension : IDbContextOptionsExtension
{
private IMongoClient _mongoClient;
private string _databaseName;
private string _logFragment;
/// <summary>
/// This API supports the Entity Framework Core infrastructure and is not intended to be used
/// directly from your code. This API may change or be removed in future releases.
/// </summary>
public MongoDbOptionsExtension([CanBeNull]MongoDbOptionsExtension existing = null)
{
if (existing != null)
{
_mongoClient = existing.MongoClient;
_databaseName = existing.DatabaseName;
}
}
/// <summary>
/// This API supports the Entity Framework Core infrastructure and is not intended to be used
/// directly from your code. This API may change or be removed in future releases.
/// </summary>
public virtual string ConnectionString
{
get => MongoUrl?.ToString();
[param: NotNull] set
=> MongoUrl = MongoUrl.Create(Check.NotEmpty(value, nameof(ConnectionString)));
}
/// <summary>
/// This API supports the Entity Framework Core infrastructure and is not intended to be used
/// directly from your code. This API may change or be removed in future releases.
/// </summary>
public virtual IMongoClient MongoClient
{
get => _mongoClient;
[param: NotNull] set
=> _mongoClient = Check.NotNull(value, nameof(MongoClient));
}
/// <summary>
/// This API supports the Entity Framework Core infrastructure and is not intended to be used
/// directly from your code. This API may change or be removed in future releases.
/// </summary>
public virtual MongoClientSettings MongoClientSettings
{
get => _mongoClient?.Settings;
[param: NotNull] set
=> _mongoClient = new MongoClient(Check.NotNull(value, nameof(MongoClientSettings)).Clone());
}
/// <summary>
/// This API supports the Entity Framework Core infrastructure and is not intended to be used
/// directly from your code. This API may change or be removed in future releases.
/// </summary>
public virtual MongoUrl MongoUrl
{
get => _mongoClient == null
? null
: MongoUrl.Create($"mongodb://{string.Join(",", _mongoClient.Settings.Servers.Select(server => $"{server.Host}:{server.Port}"))}");
[param: NotNull] set
=> MongoClientSettings = MongoClientSettings.FromUrl(Check.NotNull(value, nameof(MongoUrl)));
}
/// <summary>
/// Gets or sets the name of the database that the <see cref="DbContext"/> being configured should use.
/// </summary>
public string DatabaseName
{
get => _databaseName;
[param: NotNull] set => _databaseName = Check.NotEmpty(value, nameof(value));
}
/// <inheritdoc/>
public string LogFragment
{
get
{
if (_logFragment == null)
{
var logBuilder = new StringBuilder();
if (_mongoClient?.Settings != null)
{
logBuilder.Append("MongoClient.Settings=").Append(_mongoClient.Settings.ToString());
}
if (!string.IsNullOrEmpty(DatabaseName))
{
logBuilder.Append("DatabaseName=").Append(DatabaseName);
}
_logFragment = logBuilder.ToString();
}
return _logFragment;
}
}
/// <summary>
/// This API supports the Entity Framework Core infrastructure and is not intended to be used
/// directly from your code. This API may change or be removed in future releases.
/// </summary>
public virtual bool ApplyServices(IServiceCollection services)
{
Check.NotNull(services, nameof(services)).AddEntityFrameworkMongoDb();
return true;
}
/// <summary>
/// This API supports the Entity Framework Core infrastructure and is not intended to be used
/// directly from your code. This API may change or be removed in future releases.
/// </summary>
public virtual long GetServiceProviderHashCode() => 0;
/// <summary>
/// This API supports the Entity Framework Core infrastructure and is not intended to be used
/// directly from your code. This API may change or be removed in future releases.
/// </summary>
public virtual void Validate(IDbContextOptions options)
{
}
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/ListExtensions.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using JetBrains.Annotations;
using Microsoft.EntityFrameworkCore.Utilities;
// ReSharper disable once CheckNamespace
namespace Blueshift.EntityFrameworkCore.MongoDB
{
/// <summary>
/// Provides a set of extensions for <see cref="IList{T}"/>.
/// </summary>
public static class ListExtensions
{
/// <summary>
/// Inserts the given <paramref name="item"/> before the first instance of <typeparamref name="TExisting"/>.
/// </summary>
/// <typeparam name="T">The type of items contained in the list.</typeparam>
/// <typeparam name="TExisting">The type of the existing item.</typeparam>
/// <param name="list">An <see cref="IList{TBase}"/> whose values will be replaced.</param>
/// <param name="item">The new value to be inserted in <paramref name="list"/>.</param>
/// <returns>The modified <paramref name="list"/>, such that calls can be chained.</returns>
public static IList<T> InsertBefore<T, TExisting>([NotNull] this IList<T> list,
[NotNull] T item)
where TExisting : T
{
Check.NotNull(list, nameof(list));
Check.NotNull(item, nameof(item));
TExisting existing = list.OfType<TExisting>().FirstOrDefault();
int index = existing != null
? list.IndexOf(existing)
: list.Count;
list.Insert(index, item);
return list;
}
/// <summary>
/// Replaces instances of <typeparamref name="TBase"/> in <paramref name="replacement"/> with the
/// given <paramref name="replacement"/>.
/// </summary>
/// <typeparam name="TBase">The base type of instances to be replaced.</typeparam>
/// <typeparam name="TReplacement">The type of the replacement.</typeparam>
/// <param name="list">An <see cref="IList{TBase}"/> whose values will be replaced.</param>
/// <param name="replacement">The new value to be inserted in <paramref name="list"/>.</param>
/// <returns>The modified <paramref name="list"/>, such that calls can be chained.</returns>
public static IList<TBase> Replace<TBase, TReplacement>([NotNull] this IList<TBase> list,
[NotNull] TReplacement replacement)
where TReplacement : TBase
{
Check.NotNull(list, nameof(list));
Check.NotNull(replacement, nameof(replacement));
list
.OfType<TReplacement>()
.Select(item => list.IndexOf(item))
.ToList()
.ForEach(index => list[index] = replacement);
return list;
}
/// <summary>
/// Adds an <paramref name="item"/> to the given <paramref name="list"/>.
/// </summary>
/// <typeparam name="T">The type of items contained in <paramref name="list"/>.</typeparam>
/// <param name="list">The <see cref="IList{T}"/> to which <paramref name="item"/> will be added.</param>
/// <param name="item">The instance of <typeparamref name="T"/> to add to <paramref name="list"/>.</param>
/// <returns>The modified <paramref name="list"/>, such that calls can be chained.</returns>
public static IList<T> With<T>([NotNull] this IList<T> list,
[NotNull] T item)
{
Check.NotNull(list, nameof(list));
Check.NotNull(item, nameof(item));
list.Add(item);
return list;
}
/// <summary>
/// Removes all items that match <paramref name="predicate"/> from the given <paramref name="list"/>.
/// </summary>
/// <typeparam name="T">The type of items contained in <paramref name="list"/>.</typeparam>
/// <param name="list">The <see cref="IList{T}"/> from which items will be removed.</param>
/// <param name="predicate">A <see cref="Func{T1,T2}"/> to test for elements to remove.</param>
/// <returns>The modified <paramref name="list"/>, such that calls can be chained.</returns>
public static IList<T> Without<T>([NotNull] this IList<T> list, Func<T, bool> predicate)
{
Check.NotNull(list, nameof(list))
.Where(predicate)
.ToList()
.ForEach(item => list.Remove(item));
return list;
}
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Builders/DocumentDbInternalMetadataBuilderExtensions.cs
================================================
using JetBrains.Annotations;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Microsoft.EntityFrameworkCore.Metadata.Internal;
using Microsoft.EntityFrameworkCore.Utilities;
namespace Blueshift.EntityFrameworkCore.MongoDB.Metadata.Builders
{
/// <summary>
/// This API supports the Entity Framework Core infrastructure and is not intended to be used
/// directly from your code. This API may change or be removed in future releases.
/// </summary>
public static class DocumentInternalMetadataBuilderExtensions
{
/// <summary>
/// This API supports the Entity Framework Core infrastructure and is not intended to be used
/// directly from your code. This API may change or be removed in future releases.
/// </summary>
public static DocumentEntityTypeAnnotations Document([NotNull] this InternalEntityTypeBuilder internalEntityTypeBuilder)
=> Check.NotNull(internalEntityTypeBuilder, nameof(internalEntityTypeBuilder)).Metadata.Document();
/// <summary>
/// This API supports the Entity Framework Core infrastructure and is not intended to be used
/// directly from your code. This API may change or be removed in future releases.
/// </summary>
public static DocumentEntityTypeAnnotations Document([NotNull] this EntityTypeBuilder entityTypeBuilder)
=> Check.NotNull(entityTypeBuilder, nameof(entityTypeBuilder)).Metadata.Document();
/// <summary>
/// This API supports the Entity Framework Core infrastructure and is not intended to be used
/// directly from your code. This API may change or be removed in future releases.
/// </summary>
public static DocumentEntityTypeAnnotations Document([NotNull] this EntityType entityType)
=> Check.NotNull<IEntityType>(entityType, nameof(entityType)).Document();
/// <summary>
/// This API supports the Entity Framework Core infrastructure and is not intended to be used
/// directly from your code. This API may change or be removed in future releases.
/// </summary>
public static DocumentEntityTypeAnnotations Document([NotNull] this IEntityType entityType)
=> new DocumentEntityTypeAnnotations(Check.NotNull(entityType, nameof(entityType)));
/// <summary>
/// This API supports the Entity Framework Core infrastructure and is not intended to be used
/// directly from your code. This API may change or be removed in future releases.
/// </summary>
public static DocumentKeyAnnotations Document([NotNull] this InternalKeyBuilder internalKeyBuilder)
=> Check.NotNull(internalKeyBuilder, nameof(internalKeyBuilder)).Metadata.Document();
/// <summary>
/// This API supports the Entity Framework Core infrastructure and is not intended to be used
/// directly from your code. This API may change or be removed in future releases.
/// </summary>
public static DocumentKeyAnnotations Document([NotNull] this Key key)
=> Check.NotNull<IKey>(key, nameof(key)).Document();
/// <summary>
/// This API supports the Entity Framework Core infrastructure and is not intended to be used
/// directly from your code. This API may change or be removed in future releases.
/// </summary>
public static DocumentKeyAnnotations Document([NotNull] this IKey key)
=> new DocumentKeyAnnotations(Check.NotNull(key, nameof(key)));
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Builders/DocumentEntityTypeBuilderExtensions.cs
================================================
using JetBrains.Annotations;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Microsoft.EntityFrameworkCore.Utilities;
namespace Blueshift.EntityFrameworkCore.MongoDB.Metadata.Builders
{
/// <summary>
/// Provides a set of MongoDB-specific extension methods for <see cref="EntityTypeBuilder"/>.
/// </summary>
public static class DocumentEntityTypeBuilderExtensions
{
/// <summary>
/// Sets whether the <see cref="IEntityType"/> is a complex type (i.e.: not a valid queryable root document entity).
/// </summary>
/// <param name="entityTypeBuilder">The <see cref="EntityTypeBuilder"/> to annotate.</param>
/// <param name="isDocumentComplexType">
/// <code>true</code> if the <see cref="IEntityType"/> is a complex type;
/// otherwise <code>false</code>.
/// </param>
/// <returns>The <paramref name="entityTypeBuilder"/>, such that calls be chained.</returns>
public static EntityTypeBuilder IsDocumentComplexType(
[NotNull] this EntityTypeBuilder entityTypeBuilder,
bool isDocumentComplexType)
{
Check.NotNull(entityTypeBuilder, nameof(entityTypeBuilder));
entityTypeBuilder.Document().IsComplexType = isDocumentComplexType;
return entityTypeBuilder;
}
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Builders/DocumentInternalKeyBuilderExtensions.cs
================================================
using JetBrains.Annotations;
using Microsoft.EntityFrameworkCore.Metadata.Internal;
using Microsoft.EntityFrameworkCore.Utilities;
namespace Blueshift.EntityFrameworkCore.MongoDB.Metadata.Builders
{
/// <summary>
/// This API supports the Entity Framework Core infrastructure and is not intended to be used
/// directly from your code. This API may change or be removed in future releases.
/// </summary>
public static class DocumentInternalKeyBuilderExtensions
{
/// <summary>
/// This API supports the Entity Framework Core infrastructure and is not intended to be used
/// directly from your code. This API may change or be removed in future releases.
/// </summary>
public static InternalKeyBuilder IsDocumentOwnershipKey(
[NotNull] this InternalKeyBuilder internalKeyBuilder,
bool isDocumentOwnershipKey)
{
DocumentKeyAnnotations documentKeyAnnotations =
Check.NotNull(internalKeyBuilder, nameof(internalKeyBuilder)).Document();
documentKeyAnnotations.IsOwnershipKey = isDocumentOwnershipKey;
return internalKeyBuilder;
}
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Builders/MongoDbConventionSetBuilder.cs
================================================
using Blueshift.EntityFrameworkCore.MongoDB.Metadata.Conventions;
using JetBrains.Annotations;
using Microsoft.EntityFrameworkCore.Metadata.Conventions;
using Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal;
using Microsoft.EntityFrameworkCore.Utilities;
namespace Blueshift.EntityFrameworkCore.MongoDB.Metadata.Builders
{
/// <inheritdoc />
/// <summary>
/// This API supports the Entity Framework Core infrastructure and is not intended to be used
/// directly from your code. This API may change or be removed in future releases.
/// </summary>
public class MongoDbConventionSetBuilder : IConventionSetBuilder
{
private readonly MongoDbConventionSetBuilderDependencies _mongoDbConventionSetBuilderDependencies;
/// <summary>
/// Initializes a new instance of the <see cref="MongoDbConventionSetBuilder" /> class.
/// </summary>
/// <param name="mongoDbConventionSetBuilderDependencies">Parameter object containing dependencies for this service.</param>
public MongoDbConventionSetBuilder(
[NotNull] MongoDbConventionSetBuilderDependencies mongoDbConventionSetBuilderDependencies)
{
_mongoDbConventionSetBuilderDependencies
= Check.NotNull(mongoDbConventionSetBuilderDependencies, nameof(mongoDbConventionSetBuilderDependencies));
}
/// <summary>
/// This API supports the Entity Framework Core infrastructure and is not intended to be used
/// directly from your code. This API may change or be removed in future releases.
/// </summary>
public virtual ConventionSet AddConventions(ConventionSet conventionSet)
{
Check.NotNull(conventionSet, nameof(conventionSet));
var mongoDbRelationshipDiscoveryConvention
= new MongoDbRelationshipDiscoveryConvention(
_mongoDbConventionSetBuilderDependencies.MemberClassifier,
_mongoDbConventionSetBuilderDependencies.ModelLogger);
RelationshipDiscoveryConvention relationshipDiscoveryConvention = mongoDbRelationshipDiscoveryConvention;
var ownedDocumentConvention = new OwnedDocumentConvention();
DatabaseGeneratedAttributeConvention databaseGeneratedAttributeConvention
= new MongoDbDatabaseGeneratedAttributeConvention();
KeyAttributeConvention keyAttributeConvention = new MongoDbKeyAttributeConvention();
var mongoDatabaseConvention
= new MongoDatabaseConvention(_mongoDbConventionSetBuilderDependencies.CurrentDbContext.Context);
var bsonRequiredAttributeConvention
= new BsonRequiredAttributeConvention();
PropertyMappingValidationConvention propertyMappingValidationConvention
= new DocumentPropertyMappingValidationConvention(
_mongoDbConventionSetBuilderDependencies.MongoDbTypeMapperSource,
_mongoDbConventionSetBuilderDependencies.MemberClassifier);
conventionSet.ModelInitializedConventions
.With(mongoDatabaseConvention);
conventionSet.EntityTypeAddedConventions
.Replace(relationshipDiscoveryConvention)
.With(ownedDocumentConvention)
.With(new MongoCollectionAttributeConvention())
.With(new BsonDiscriminatorAttributeConvention())
.With(new BsonIgnoreAttributeConvention())
.With(new BsonKnownTypesAttributeConvention());
conventionSet.BaseEntityTypeChangedConventions
.Replace(relationshipDiscoveryConvention)
.With(ownedDocumentConvention);
conventionSet.EntityTypeMemberIgnoredConventions
.Replace(relationshipDiscoveryConvention);
conventionSet.KeyAddedConventions
.With(ownedDocumentConvention);
conventionSet.KeyRemovedConventions
.With(ownedDocumentConvention);
conventionSet.ForeignKeyAddedConventions
.With(ownedDocumentConvention);
conventionSet.ForeignKeyOwnershipChangedConventions
.With(mongoDbRelationshipDiscoveryConvention)
.Without(item => item is NavigationEagerLoadingConvention);
conventionSet.PropertyAddedConventions
.Replace(databaseGeneratedAttributeConvention)
.Replace(keyAttributeConvention)
.With(bsonRequiredAttributeConvention);
conventionSet.PropertyFieldChangedConventions
.Replace(databaseGeneratedAttributeConvention)
.Replace(keyAttributeConvention)
.With(bsonRequiredAttributeConvention);
conventionSet.NavigationAddedConventions
.Replace(relationshipDiscoveryConvention);
conventionSet.NavigationRemovedConventions
.Replace(relationshipDiscoveryConvention);
conventionSet.ModelBuiltConventions
.Replace(keyAttributeConvention)
.Replace(propertyMappingValidationConvention)
.With(ownedDocumentConvention);
return conventionSet;
}
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Builders/MongoDbConventionSetBuilderDependencies.cs
================================================
using Blueshift.EntityFrameworkCore.MongoDB.Storage;
using JetBrains.Annotations;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Diagnostics;
using Microsoft.EntityFrameworkCore.Internal;
using Microsoft.EntityFrameworkCore.Metadata.Internal;
using Microsoft.EntityFrameworkCore.Utilities;
namespace Blueshift.EntityFrameworkCore.MongoDB.Metadata.Builders
{
/// <summary>
/// <para>
/// Service dependencies parameter class for <see cref="MongoDbConventionSetBuilder" />
/// </para>
/// <para>
/// This API supports the Entity Framework Core infrastructure and is not intended to be used
/// directly from your code. This API may change or be removed in future releases.
/// </para>
/// <para>
/// Do not construct instances of this class directly from either provider or application code as the
/// constructor signature may change as new dependencies are added. Instead, use this type in
/// your constructor so that an instance will be created and injected automatically by the
/// dependency injection container. To create an instance with some dependent services replaced,
/// first resolve the object from the dependency injection container, then replace selected
/// services using the 'With...' methods. Do not call the constructor at any point in this process.
/// </para>
/// </summary>
public class MongoDbConventionSetBuilderDependencies
{
/// <summary>
/// Initializes a new instance of the <see cref="MongoDbConventionSetBuilderDependencies"/> class.
/// </summary>
/// <param name="currentDbContext">Indirection to the current <see cref="DbContext" /> instance.</param>
/// <param name="mongoDbTypeMappingSource">Maps .NET types to their corresponding database provider types.</param>
/// <param name="memberClassifier">Determines the property types for candidate navigation properties.</param>
/// <param name="modelLogger">Traces the process of building a <see cref="Model"/>.</param>
public MongoDbConventionSetBuilderDependencies(
[NotNull] ICurrentDbContext currentDbContext,
[NotNull] IMongoDbTypeMappingSource mongoDbTypeMappingSource,
[NotNull] IMemberClassifier memberClassifier,
[NotNull] IDiagnosticsLogger<DbLoggerCategory.Model> modelLogger)
{
CurrentDbContext = Check.NotNull(currentDbContext, nameof(currentDbContext));
MongoDbTypeMapperSource = Check.NotNull(mongoDbTypeMappingSource, nameof(mongoDbTypeMappingSource));
MemberClassifier = Check.NotNull(memberClassifier, nameof(memberClassifier));
ModelLogger = Check.NotNull(modelLogger, nameof(modelLogger));
}
/// <summary>
/// Indirection to the current <see cref="DbContext" /> instance.
/// </summary>
public ICurrentDbContext CurrentDbContext { get; }
/// <summary>
/// Maps .NET types to their corresponding database provider types.
/// </summary>
public IMongoDbTypeMappingSource MongoDbTypeMapperSource { get; }
/// <summary>
/// The <see cref="IMemberClassifier"/> to use to determine the property types for candidate navigation properties.
/// </summary>
public IMemberClassifier MemberClassifier { get; set; }
/// <summary>
/// The <see cref="IDiagnosticsLogger{TLoggerCategory}"/> used for tracing the process of building a <see cref="Model"/>.
/// </summary>
public IDiagnosticsLogger<DbLoggerCategory.Model> ModelLogger { get; set; }
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Builders/MongoDbEntityTypeBuilderExtensions.cs
================================================
using JetBrains.Annotations;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Microsoft.EntityFrameworkCore.Utilities;
namespace Blueshift.EntityFrameworkCore.MongoDB.Metadata.Builders
{
/// <summary>
/// Provides a set of MongoDB-specific extension methods for <see cref="EntityTypeBuilder"/>.
/// </summary>
public static class MongoDbEntityTypeBuilderExtensions
{
/// <summary>
/// Sets the name of the MongoDB collection used to store the <see cref="IEntityType"/> being built.
/// </summary>
/// <param name="entityTypeBuilder">The <see cref="EntityTypeBuilder"/> to annotate.</param>
/// <param name="collectionName">The name of the MongoDB collection.</param>
/// <returns>The <paramref name="entityTypeBuilder"/>, such that calls be chained.</returns>
public static EntityTypeBuilder ForMongoDbFromCollection(
[NotNull] this EntityTypeBuilder entityTypeBuilder,
[NotNull] string collectionName)
{
Check.NotNull(entityTypeBuilder, nameof(entityTypeBuilder));
Check.NotEmpty(collectionName, nameof(collectionName));
entityTypeBuilder.MongoDb().CollectionName = collectionName;
return entityTypeBuilder;
}
/// <summary>
/// Sets the discriminator used to query instances of the <see cref="IEntityType"/> being built.
/// </summary>
/// <param name="entityTypeBuilder">The <see cref="EntityTypeBuilder"/> to annotate.</param>
/// <param name="discriminator">The discriminator for the <see cref="IEntityType"/>.</param>
/// <returns>The <paramref name="entityTypeBuilder"/>, such that calls be chained.</returns>
public static EntityTypeBuilder ForMongoDbHasDiscriminator(
[NotNull] this EntityTypeBuilder entityTypeBuilder,
[NotNull] string discriminator)
{
Check.NotNull(entityTypeBuilder, nameof(entityTypeBuilder));
Check.NotEmpty(discriminator, nameof(discriminator));
entityTypeBuilder.MongoDb().Discriminator = discriminator;
return entityTypeBuilder;
}
/// <summary>
/// Sets the whether or not a discriminator is required to query instances of the <see cref="IEntityType"/> being built.
/// </summary>
/// <param name="entityTypeBuilder">The <see cref="EntityTypeBuilder"/> to annotate.</param>
/// <param name="discriminatorIsRequired">
/// <code>true</code> if a discriminator is required to query instances of the entity; otherwise <code>false</code>.
/// </param>
/// <returns>The <paramref name="entityTypeBuilder"/>, such that calls be chained.</returns>
public static EntityTypeBuilder ForMongoDbDiscriminatorIsRequired(
[NotNull] this EntityTypeBuilder entityTypeBuilder,
bool discriminatorIsRequired)
{
Check.NotNull(entityTypeBuilder, nameof(entityTypeBuilder));
entityTypeBuilder.MongoDb().DiscriminatorIsRequired = discriminatorIsRequired;
return entityTypeBuilder;
}
/// <summary>
/// Sets whether the <see cref="IEntityType"/> being built is a root type of a polymorphic hierarchy.
/// </summary>
/// <param name="entityTypeBuilder">The <see cref="EntityTypeBuilder"/> to annotate.</param>
/// <param name="isRootType">
/// <code>true</code> if the <see cref="IEntityType"/> is the root entity type; otherwise <code>false</code>.
/// </param>
/// <returns>The <paramref name="entityTypeBuilder"/>, such that calls be chained.</returns>
public static EntityTypeBuilder ForMongoDbIsRootType(
[NotNull] this EntityTypeBuilder entityTypeBuilder,
bool isRootType)
{
Check.NotNull(entityTypeBuilder, nameof(entityTypeBuilder));
entityTypeBuilder.MongoDb().IsRootType = isRootType;
return entityTypeBuilder;
}
/// <summary>
/// Sets whether the identity of the <see cref="IEntityType"/> being built should be assigned by MongoDb on insert.
/// </summary>
/// <param name="entityTypeBuilder">The <see cref="EntityTypeBuilder"/> to annotate.</param>
/// <param name="assignIdOnInsert">
/// <code>true</code> if the identity of the <see cref="IEntityType"/> is assigned on insert;
/// otherwise <code>false</code>.
/// </param>
/// <returns>The <paramref name="entityTypeBuilder"/>, such that calls be chained.</returns>
public static EntityTypeBuilder ForMongoDbAssignIdOnInsert(
[NotNull] this EntityTypeBuilder entityTypeBuilder,
bool assignIdOnInsert)
{
Check.NotNull(entityTypeBuilder, nameof(entityTypeBuilder));
entityTypeBuilder.MongoDb().AssignIdOnInsert = assignIdOnInsert;
return entityTypeBuilder;
}
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Builders/MongoDbInternalMetadataBuilderExtensions.cs
================================================
using JetBrains.Annotations;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Microsoft.EntityFrameworkCore.Metadata.Internal;
using Microsoft.EntityFrameworkCore.Utilities;
// ReSharper disable once CheckNamespace
namespace Blueshift.EntityFrameworkCore.MongoDB.Metadata.Builders
{
/// <summary>
/// This API supports the Entity Framework Core infrastructure and is not intended to be used
/// directly from your code. This API may change or be removed in future releases.
/// </summary>
public static class MongoDbInternalMetadataBuilderExtensions
{
/// <summary>
/// This API supports the Entity Framework Core infrastructure and is not intended to be used
/// directly from your code. This API may change or be removed in future releases.
/// </summary>
public static MongoDbEntityTypeAnnotations MongoDb([NotNull] this InternalEntityTypeBuilder internalEntityTypeBuilder)
=> MongoDb(Check.NotNull(internalEntityTypeBuilder, nameof(internalEntityTypeBuilder)).Metadata);
/// <summary>
/// This API supports the Entity Framework Core infrastructure and is not intended to be used
/// directly from your code. This API may change or be removed in future releases.
/// </summary>
public static MongoDbEntityTypeAnnotations MongoDb([NotNull] this EntityTypeBuilder entityTypeBuilder)
=> MongoDb(Check.NotNull(entityTypeBuilder, nameof(entityTypeBuilder)).Metadata);
/// <summary>
/// This API supports the Entity Framework Core infrastructure and is not intended to be used
/// directly from your code. This API may change or be removed in future releases.
/// </summary>
public static MongoDbEntityTypeAnnotations MongoDb([NotNull] this IEntityType entityType)
=> MongoDb(Check.Is<IMutableEntityType>(entityType, nameof(entityType)));
/// <summary>
/// This API supports the Entity Framework Core infrastructure and is not intended to be used
/// directly from your code. This API may change or be removed in future releases.
/// </summary>
public static MongoDbEntityTypeAnnotations MongoDb([NotNull] this IMutableEntityType mutableEntityType)
=> new MongoDbEntityTypeAnnotations(Check.NotNull(mutableEntityType, nameof(mutableEntityType)));
/// <summary>
/// This API supports the Entity Framework Core infrastructure and is not intended to be used
/// directly from your code. This API may change or be removed in future releases.
/// </summary>
public static MongoDbModelAnnotations MongoDb([NotNull] this InternalModelBuilder internalModelBuilder)
=> MongoDb(Check.NotNull(internalModelBuilder, nameof(internalModelBuilder)).Metadata);
/// <summary>
/// This API supports the Entity Framework Core infrastructure and is not intended to be used
/// directly from your code. This API may change or be removed in future releases.
/// </summary>
public static MongoDbModelAnnotations MongoDb([NotNull] this ModelBuilder modelBuilder)
=> MongoDb(Check.NotNull(modelBuilder, nameof(modelBuilder)).Model);
/// <summary>
/// This API supports the Entity Framework Core infrastructure and is not intended to be used
/// directly from your code. This API may change or be removed in future releases.
/// </summary>
public static MongoDbModelAnnotations MongoDb([NotNull] this IModel model)
=> MongoDb(Check.Is<IMutableModel>(model, nameof(model)));
/// <summary>
/// This API supports the Entity Framework Core infrastructure and is not intended to be used
/// directly from your code. This API may change or be removed in future releases.
/// </summary>
public static MongoDbModelAnnotations MongoDb([NotNull] this IMutableModel mutableModel)
=> new MongoDbModelAnnotations(Check.NotNull(mutableModel, nameof(mutableModel)));
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Builders/MongoDbModelBuilderExtensions.cs
================================================
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Utilities;
// ReSharper disable once CheckNamespace
namespace Blueshift.EntityFrameworkCore.MongoDB.Metadata.Builders
{
/// <summary>
/// MongoDb-specific extension methods for <see cref="ModelBuilder" />.
/// </summary>
public static class MongoDbModelBuilderExtensions
{
/// <summary>
/// Configures the database to use when connecting to MongoDb.
/// </summary>
/// <param name="modelBuilder">The <see cref="ModelBuilder"/> to configure.</param>
/// <param name="database">The name of the database.</param>
/// <returns>This <see cref="ModelBuilder"/>, such that calls can be chained.</returns>
public static ModelBuilder ForMongoDbFromDatabase(this ModelBuilder modelBuilder, string database)
{
Check.NotNull(modelBuilder, nameof(modelBuilder));
modelBuilder.Model.MongoDb().Database = database;
return modelBuilder;
}
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Conventions/BsonDiscriminatorAttributeConvention.cs
================================================
using Blueshift.EntityFrameworkCore.MongoDB.Metadata.Builders;
using Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal;
using Microsoft.EntityFrameworkCore.Metadata.Internal;
using Microsoft.EntityFrameworkCore.Utilities;
using MongoDB.Bson.Serialization.Attributes;
namespace Blueshift.EntityFrameworkCore.MongoDB.Metadata.Conventions
{
/// <inheritdoc />
public class BsonDiscriminatorAttributeConvention : EntityTypeAttributeConvention<BsonDiscriminatorAttribute>
{
/// <inheritdoc />
public override InternalEntityTypeBuilder Apply(InternalEntityTypeBuilder entityTypeBuilder,
BsonDiscriminatorAttribute attribute)
{
Check.NotNull(entityTypeBuilder, nameof(entityTypeBuilder));
Check.NotNull(attribute, nameof(attribute));
MongoDbEntityTypeAnnotations annotations = entityTypeBuilder.MongoDb();
if (!string.IsNullOrWhiteSpace(attribute.Discriminator))
{
annotations.Discriminator = attribute.Discriminator;
}
if (!annotations.DiscriminatorIsRequired)
{
annotations.DiscriminatorIsRequired = attribute.Required;
}
annotations.IsRootType = attribute.RootClass;
return entityTypeBuilder;
}
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Conventions/BsonIgnoreAttributeConvention.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal;
using Microsoft.EntityFrameworkCore.Metadata.Internal;
using Microsoft.EntityFrameworkCore.Utilities;
using MongoDB.Bson.Serialization.Attributes;
namespace Blueshift.EntityFrameworkCore.MongoDB.Metadata.Conventions
{
/// <summary>
/// This API supports the Entity Framework Core infrastructure and is not intended to be used
/// directly from your code. This API may change or be removed in future releases.
/// </summary>
public class BsonIgnoreAttributeConvention : IEntityTypeAddedConvention
{
/// <summary>
/// This API supports the Entity Framework Core infrastructure and is not intended to be used
/// directly from your code. This API may change or be removed in future releases.
/// </summary>
public virtual InternalEntityTypeBuilder Apply(InternalEntityTypeBuilder entityTypeBuilder)
{
Check.NotNull(entityTypeBuilder, nameof(entityTypeBuilder));
Type clrType = entityTypeBuilder.Metadata.ClrType;
if (clrType == null)
{
return entityTypeBuilder;
}
IEnumerable<MemberInfo> members = clrType.GetRuntimeProperties()
.Cast<MemberInfo>()
.Concat(clrType.GetRuntimeFields())
.Where(memberInfo => memberInfo.IsDefined(typeof(BsonIgnoreAttribute), true));
foreach (MemberInfo member in members)
{
entityTypeBuilder.Ignore(member.Name, ConfigurationSource.DataAnnotation);
}
return entityTypeBuilder;
}
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Conventions/BsonKnownTypesAttributeConvention.cs
================================================
using System;
using System.Reflection;
using Blueshift.EntityFrameworkCore.MongoDB.Metadata.Builders;
using Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal;
using Microsoft.EntityFrameworkCore.Metadata.Internal;
using Microsoft.EntityFrameworkCore.Utilities;
using MongoDB.Bson.Serialization.Attributes;
namespace Blueshift.EntityFrameworkCore.MongoDB.Metadata.Conventions
{
/// <inheritdoc />
public class BsonKnownTypesAttributeConvention : EntityTypeAttributeConvention<BsonKnownTypesAttribute>
{
/// <inheritdoc />
public override InternalEntityTypeBuilder Apply(InternalEntityTypeBuilder entityTypeBuilder)
{
Check.NotNull(entityTypeBuilder, nameof(entityTypeBuilder));
var type = entityTypeBuilder.Metadata.ClrType;
if (type == null || !Attribute.IsDefined(type, typeof(BsonKnownTypesAttribute), inherit: false))
{
return entityTypeBuilder;
}
var attributes = type.GetTypeInfo().GetCustomAttributes<BsonKnownTypesAttribute>(false);
foreach (var attribute in attributes)
{
entityTypeBuilder = Apply(entityTypeBuilder, attribute);
if (entityTypeBuilder == null)
{
break;
}
}
return entityTypeBuilder;
}
/// <inheritdoc />
public override InternalEntityTypeBuilder Apply(
InternalEntityTypeBuilder entityTypeBuilder,
BsonKnownTypesAttribute bsonKnownTypesAttribute)
{
MongoDbEntityTypeAnnotations annotations = entityTypeBuilder.MongoDb();
if (!annotations.DiscriminatorIsRequired)
{
annotations.DiscriminatorIsRequired = entityTypeBuilder.Metadata.IsAbstract();
}
if (bsonKnownTypesAttribute.KnownTypes != null)
{
InternalModelBuilder modelBuilder = entityTypeBuilder.ModelBuilder;
Type baseType = entityTypeBuilder.Metadata.ClrType;
foreach (Type derivedType in bsonKnownTypesAttribute.KnownTypes)
{
if (!baseType.IsAssignableFrom(derivedType))
{
throw new InvalidOperationException($"Known type {derivedType} declared on base type {baseType} does not inherit from base type.");
}
modelBuilder
.Entity(derivedType, ConfigurationSource.DataAnnotation)
.MongoDb()
.IsDerivedType = true;
}
}
return entityTypeBuilder;
}
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Conventions/BsonRequiredAttributeConvention.cs
================================================
using System.Reflection;
using Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal;
using Microsoft.EntityFrameworkCore.Metadata.Internal;
using Microsoft.EntityFrameworkCore.Utilities;
using MongoDB.Bson.Serialization.Attributes;
namespace Blueshift.EntityFrameworkCore.MongoDB.Metadata.Conventions
{
/// <summary>
/// This API supports the Entity Framework Core infrastructure and is not intended to be used
/// directly from your code. This API may change or be removed in future releases.
/// </summary>
public class BsonRequiredAttributeConvention : PropertyAttributeConvention<BsonRequiredAttribute>
{
/// <summary>
/// This API supports the Entity Framework Core infrastructure and is not intended to be used
/// directly from your code. This API may change or be removed in future releases.
/// </summary>
public override InternalPropertyBuilder Apply(InternalPropertyBuilder propertyBuilder,
BsonRequiredAttribute attribute,
MemberInfo clrMember)
{
Check.NotNull(propertyBuilder, nameof(propertyBuilder));
Check.NotNull(attribute, nameof(attribute));
Check.NotNull(clrMember, nameof(clrMember));
propertyBuilder.IsRequired(true, ConfigurationSource.DataAnnotation);
return propertyBuilder;
}
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Conventions/DocumentPropertyMappingValidationConvention.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using JetBrains.Annotations;
using Microsoft.EntityFrameworkCore.Internal;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal;
using Microsoft.EntityFrameworkCore.Metadata.Internal;
using Microsoft.EntityFrameworkCore.Storage;
using Microsoft.EntityFrameworkCore.Utilities;
namespace Blueshift.EntityFrameworkCore.MongoDB.Metadata.Conventions
{
/// <inheritdoc />
public class DocumentPropertyMappingValidationConvention : PropertyMappingValidationConvention
{
private readonly ITypeMappingSource _typeMappingSource;
private readonly IMemberClassifier _memberClassifier;
/// <inheritdoc />
public DocumentPropertyMappingValidationConvention(
[NotNull] ITypeMappingSource typeMappingSource,
[NotNull] IMemberClassifier memberClassifier)
: base(
Check.NotNull(typeMappingSource, nameof(typeMappingSource)),
Check.NotNull(memberClassifier, nameof(memberClassifier)))
{
_typeMappingSource = typeMappingSource;
_memberClassifier = memberClassifier;
}
/// <inheritdoc />
public override InternalModelBuilder Apply(InternalModelBuilder modelBuilder)
{
foreach (var entityType in modelBuilder.Metadata.GetEntityTypes())
{
var unmappedProperty = entityType.GetProperties().FirstOrDefault(p =>
(!ConfigurationSource.Convention.Overrides(p.GetConfigurationSource()) || !p.IsShadowProperty)
&& !IsMappedPrimitiveProperty(p));
if (unmappedProperty != null)
{
throw new InvalidOperationException(
CoreStrings.PropertyNotMapped(
entityType.DisplayName(), unmappedProperty.Name, unmappedProperty.ClrType.ShortDisplayName()));
}
if (!entityType.HasClrType())
{
continue;
}
var clrProperties = new HashSet<string>();
clrProperties.UnionWith(
entityType.GetRuntimeProperties().Values
.Where(pi => pi.IsCandidateProperty())
.Select(pi => pi.Name));
clrProperties.ExceptWith(entityType.GetProperties().Select(p => p.Name));
clrProperties.ExceptWith(entityType.GetNavigations().Select(p => p.Name));
clrProperties.ExceptWith(entityType.GetServiceProperties().Select(p => p.Name));
clrProperties.RemoveWhere(p => entityType.Builder.IsIgnored(p, ConfigurationSource.Convention));
if (clrProperties.Count <= 0)
{
continue;
}
foreach (var clrProperty in clrProperties)
{
var actualProperty = entityType.GetRuntimeProperties()[clrProperty];
var propertyType = actualProperty.PropertyType;
var targetSequenceType = propertyType.TryGetSequenceType();
if (modelBuilder.IsIgnored(modelBuilder.Metadata.GetDisplayName(propertyType),
ConfigurationSource.Convention)
|| (targetSequenceType != null
&& modelBuilder.IsIgnored(modelBuilder.Metadata.GetDisplayName(targetSequenceType),
ConfigurationSource.Convention)))
{
continue;
}
var targetType = base.FindCandidateNavigationPropertyType(actualProperty);
var isTargetWeakOrOwned
= targetType != null
&& (modelBuilder.Metadata.HasEntityTypeWithDefiningNavigation(targetType)
|| modelBuilder.Metadata.ShouldBeOwnedType(targetType));
if (targetType != null
&& targetType.IsValidEntityType()
&& (isTargetWeakOrOwned
|| modelBuilder.Metadata.FindEntityType(targetType) != null
|| targetType.GetRuntimeProperties().Any(p => p.IsCandidateProperty())))
{
if ((!isTargetWeakOrOwned
|| !targetType.GetTypeInfo().Equals(entityType.ClrType.GetTypeInfo()))
&& entityType.GetDerivedTypes().All(
dt => dt.FindDeclaredNavigation(actualProperty.Name) == null)
&& !entityType.IsInDefinitionPath(targetType))
{
throw new InvalidOperationException(
CoreStrings.NavigationNotAdded(
entityType.DisplayName(), actualProperty.Name, propertyType.ShortDisplayName()));
}
}
else if (targetSequenceType == null && propertyType.GetTypeInfo().IsInterface
|| targetSequenceType != null && targetSequenceType.GetTypeInfo().IsInterface)
{
throw new InvalidOperationException(
CoreStrings.InterfacePropertyNotAdded(
entityType.DisplayName(), actualProperty.Name, propertyType.ShortDisplayName()));
}
else
{
throw new InvalidOperationException(
CoreStrings.PropertyNotAdded(
entityType.DisplayName(), actualProperty.Name, propertyType.ShortDisplayName()));
}
}
}
return modelBuilder;
}
/// <inheritdoc />
protected override bool IsMappedPrimitiveProperty([NotNull] IProperty property)
=> _typeMappingSource.FindMapping(property) != null;
/// <inheritdoc />
protected override Type FindCandidateNavigationPropertyType([NotNull] PropertyInfo propertyInfo)
=> _memberClassifier.FindCandidateNavigationPropertyType(propertyInfo);
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Conventions/MongoCollectionAttributeConvention.cs
================================================
using Blueshift.EntityFrameworkCore.MongoDB.Annotations;
using Blueshift.EntityFrameworkCore.MongoDB.Metadata.Builders;
using Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal;
using Microsoft.EntityFrameworkCore.Metadata.Internal;
using Microsoft.EntityFrameworkCore.Utilities;
namespace Blueshift.EntityFrameworkCore.MongoDB.Metadata.Conventions
{
/// <summary>
/// This API supports the Entity Framework Core infrastructure and is not intended to be used
/// directly from your code. This API may change or be removed in future releases.
/// </summary>
public class MongoCollectionAttributeConvention : EntityTypeAttributeConvention<MongoCollectionAttribute>
{
/// <inheritdoc />
public override InternalEntityTypeBuilder Apply(
InternalEntityTypeBuilder entityTypeBuilder,
MongoCollectionAttribute mongoCollectionAttribute)
{
Check.NotNull(entityTypeBuilder, nameof(entityTypeBuilder));
Check.NotNull(mongoCollectionAttribute, nameof(mongoCollectionAttribute));
entityTypeBuilder.MongoDb().CollectionName = mongoCollectionAttribute.CollectionName;
return entityTypeBuilder;
}
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Conventions/MongoDatabaseConvention.cs
================================================
using System.Reflection;
using System.Text.RegularExpressions;
using Blueshift.EntityFrameworkCore.MongoDB.Annotations;
using Blueshift.EntityFrameworkCore.MongoDB.Infrastructure;
using Blueshift.EntityFrameworkCore.MongoDB.Metadata.Builders;
using JetBrains.Annotations;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Internal;
using Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal;
using Microsoft.EntityFrameworkCore.Metadata.Internal;
using Microsoft.EntityFrameworkCore.Utilities;
namespace Blueshift.EntityFrameworkCore.MongoDB.Metadata.Conventions
{
/// <inheritdoc />
/// <summary>
/// This API supports the Entity Framework Core infrastructure and is not intended to be used
/// directly from your code. This API may change or be removed in future releases.
/// </summary>
public class MongoDatabaseConvention : IModelInitializedConvention
{
private readonly DbContext _dbContext;
private readonly MongoDbOptionsExtension _mongoDbOptionsExtension;
/// <summary>
/// This API supports the Entity Framework Core infrastructure and is not intended to be used
/// directly from your code. This API may change or be removed in future releases.
/// </summary>
public MongoDatabaseConvention([NotNull] DbContext dbContext)
{
_dbContext = Check.NotNull(dbContext, nameof(dbContext));
_mongoDbOptionsExtension = _dbContext
.GetService<IDbContextServices>()
.ContextOptions
.FindExtension<MongoDbOptionsExtension>();
}
/// <inheritdoc />
/// <summary>
/// This API supports the Entity Framework Core infrastructure and is not intended to be used
/// directly from your code. This API may change or be removed in future releases.
/// </summary>
public InternalModelBuilder Apply(InternalModelBuilder modelBuilder)
{
Check.NotNull(modelBuilder, nameof(modelBuilder));
MongoDatabaseAttribute mongoDatabaseAttribute = _dbContext.GetType()
.GetTypeInfo()
.GetCustomAttribute<MongoDatabaseAttribute>();
string databaseName = _mongoDbOptionsExtension.DatabaseName
?? mongoDatabaseAttribute?.Database
?? GetDefaultDatabaseName();
Check.NotNull(modelBuilder, nameof(modelBuilder))
.MongoDb()
.Database = databaseName;
return modelBuilder;
}
private string GetDefaultDatabaseName()
=> MongoDbUtilities.ToLowerCamelCase(Regex.Replace(_dbContext.GetType().Name, "(?:Mongo)?(?:Db)?(?:Context)?$", ""));
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Conventions/MongoDbDatabaseGeneratedAttributeConvention.cs
================================================
using System.ComponentModel.DataAnnotations.Schema;
using System.Reflection;
using Blueshift.EntityFrameworkCore.MongoDB.Metadata.Builders;
using Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal;
using Microsoft.EntityFrameworkCore.Metadata.Internal;
namespace Blueshift.EntityFrameworkCore.MongoDB.Metadata.Conventions
{
/// <inheritdoc />
public class MongoDbDatabaseGeneratedAttributeConvention : DatabaseGeneratedAttributeConvention
{
/// <inheritdoc />
public override InternalPropertyBuilder Apply(
InternalPropertyBuilder propertyBuilder,
DatabaseGeneratedAttribute attribute,
MemberInfo clrMember)
{
if (attribute.DatabaseGeneratedOption == DatabaseGeneratedOption.Identity)
{
propertyBuilder.Metadata
.DeclaringEntityType
.MongoDb()
.AssignIdOnInsert = true;
}
return base.Apply(propertyBuilder, attribute, clrMember);
}
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Conventions/MongoDbKeyAttributeConvention.cs
================================================
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Reflection;
using Blueshift.EntityFrameworkCore.MongoDB.Metadata.Builders;
using Microsoft.EntityFrameworkCore.Internal;
using Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal;
using Microsoft.EntityFrameworkCore.Metadata.Internal;
using Microsoft.EntityFrameworkCore.Utilities;
using MongoDB.Bson.Serialization.Attributes;
namespace Blueshift.EntityFrameworkCore.MongoDB.Metadata.Conventions
{
/// <inheritdoc />
public class MongoDbKeyAttributeConvention : KeyAttributeConvention
{
private static readonly KeyAttribute KeyAttribute = new KeyAttribute();
/// <inheritdoc />
public override InternalPropertyBuilder Apply(InternalPropertyBuilder propertyBuilder)
{
Check.NotNull(propertyBuilder, nameof(propertyBuilder));
MemberInfo memberInfo = propertyBuilder.Metadata.GetIdentifyingMemberInfo();
return (memberInfo?.IsDefined(typeof(BsonIdAttribute), true) ?? false)
? Apply(propertyBuilder, KeyAttribute, memberInfo)
: base.Apply(propertyBuilder);
}
/// <inheritdoc />
public override InternalModelBuilder Apply(InternalModelBuilder modelBuilder)
{
IEnumerable<EntityType> entityTypes = modelBuilder.Metadata
.GetEntityTypes()
.Where(entityType => entityType.MongoDb().IsDerivedType);
foreach (EntityType entityType in entityTypes)
{
foreach (Property declaredProperty in entityType.GetDeclaredProperties())
{
if (declaredProperty.GetIdentifyingMemberInfo()?.IsDefined(typeof(BsonIdAttribute), true) ?? false)
{
throw new InvalidOperationException(
CoreStrings.KeyAttributeOnDerivedEntity(entityType.DisplayName(), declaredProperty.Name));
}
}
}
return base.Apply(modelBuilder);
}
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Conventions/MongoDbRelationshipDiscoveryConvention.cs
================================================
using JetBrains.Annotations;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Diagnostics;
using Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal;
using Microsoft.EntityFrameworkCore.Metadata.Internal;
namespace Blueshift.EntityFrameworkCore.MongoDB.Metadata.Conventions
{
/// <inheritdoc cref="RelationshipDiscoveryConvention"/>
/// <inheritdoc cref="IForeignKeyOwnershipChangedConvention"/>
public class MongoDbRelationshipDiscoveryConvention : RelationshipDiscoveryConvention, IForeignKeyOwnershipChangedConvention
{
/// <inheritdoc />
public MongoDbRelationshipDiscoveryConvention(
[NotNull] IMemberClassifier memberClassifier,
[NotNull] IDiagnosticsLogger<DbLoggerCategory.Model> logger)
: base(memberClassifier, logger)
{
}
/// <inheritdoc />
InternalRelationshipBuilder IForeignKeyOwnershipChangedConvention.Apply(InternalRelationshipBuilder relationshipBuilder)
{
Apply(relationshipBuilder.Metadata.DeclaringEntityType.Builder);
return relationshipBuilder;
}
}
}
================================================
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Conventions/OwnedDocumentConvention.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using Blueshift.EntityFrameworkCore.MongoDB.Metadata.Builders;
using Blueshift.EntityFrameworkCore.MongoDB.ValueGeneration;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal;
using Microsoft.EntityFrameworkCore.Metadata.Internal;
using Microsoft.EntityFrameworkCore.Utilities;
namespace Blueshift.EntityFrameworkCore.MongoDB.Metadata.Conventions
{
/// <inheritdoc cref="IBaseTypeChangedConvention"/>
/// <inheritdoc cref="IEntityTypeAddedConvention"/>
/// <inheritdoc cref="IForeignKeyAddedConvention"/>
/// <inheritdoc cref="IKeyAddedConvention"/>
/// <inheritdoc cref="IKeyRemovedConvention"/>
/// <inheritdoc cref="IModelBuiltConvention"/>
public class OwnedDocumentConvention :
IBaseTypeChangedConvention,
IEntityTypeAddedConvention,
IForeignKeyAddedConvention,
IKeyAddedConvention,
IKeyRemovedConvention,
IModelBuiltConvention
{
/// <inheritdoc />
public InternalEntityTypeBuilder Apply(InternalEntityTypeBuilder entityTypeBuilder)
{
Check.NotNull(entityTypeBuilder, nameof(entityTypeBuilder));
EntityType entityType = entityTypeBuilder.Metadata;
Key primaryKey = entityType.FindPrimaryKey();
bool isComplexType = primaryKey == null
|| primaryKey.Document().IsOwnershipKey;
entityTypeBuilder.Document().IsComplexType = isComplexType;
return entityTypeBuilder;
}
/// <inheritdoc />
public bool Apply(
InternalEntityTypeBuilder entityTypeBuilder,
EntityType oldBaseType)
{
Apply(entityTypeBuilder);
return true;
}
/// <inheritdoc />
public InternalKeyBuilder Apply(InternalKeyBuilder keyBuilder)
{
Apply(Check.NotNull(keyBuilder, nameof(keyBuilder)).Metadata.DeclaringEntityType.Builder);
return keyBuilder;
}
/// <inheritdoc />
public void Apply(InternalEntityTypeBuilder entityTypeBuilder, Key key)
{
Apply(entityTypeBuilder);
}
/// <inheritdoc />
public InternalRelationshipBuilder Apply(InternalRelationshipBuilder relationshipBuilder)
{
Check.NotNull(relationshipBuilder, nameof(relationshipBuilder));
IEntityType principalEntityType = relationshipBuilder.Metadata.PrincipalEntityType;
bool principalIsOwned = principalEntityType.IsOwned()
|| principalEntityType.MongoDb().IsComplexType;
if (principalIsOwned)
{
relationshipBuilder.IsOwnership(true, ConfigurationSource.Explicit);
}
return relationshipBuilder;
}
/// <inheritdoc />
public InternalModelBuilder Apply(InternalModelBuilder modelBuilder)
{
IModel model = Check.NotNull(modelBuilder, nameof(modelBuilder)).Metadata;
IEnumerable<EntityType> ownedEntityTypes = model
.GetEntityTypes()
.Where(entityType => entityType.IsOwned()
|| entityType.MongoDb().IsComplexType)
.Select(entityType => entityType.AsEntityType())
.ToList();
foreach (EntityType ownedEntityType in ownedEntityTypes)
{
bool isOwnedType = ownedEntityType.HasClrType()
? model.ShouldBeOwnedType(ownedEntityType.ClrType)
: model.ShouldBeOwnedType(ownedEntityType.Name);
if (!isOwnedType)
{
if (ownedEntityType.HasClrType())
{
modelBuilder.Owned(ownedEntityType.ClrType, ConfigurationSource.Convention);
gitextract_yaxh7ovu/ ├── .dockerignore ├── .gitattributes ├── .gitignore ├── .travis.yml ├── Blueshift.EntityFrameworkCore.sln ├── Blueshift.EntityFrameworkCore.sln.DotSettings ├── Directory.Build.props ├── Directory.Build.targets ├── LICENSE.txt ├── NuGet.config ├── README.md ├── appveyor.yml ├── build/ │ ├── dependencies.props │ ├── repo.beforecommon.props │ ├── repo.props │ ├── repo.targets │ └── sources.props ├── build.cmd ├── build.sh ├── docker-compose.dcproj ├── docker-compose.yml ├── korebuild-lock.txt ├── korebuild.json ├── run.cmd ├── run.ps1 ├── run.sh ├── src/ │ ├── Blueshift.EntityFrameworkCore.MongoDB/ │ │ ├── Adapter/ │ │ │ ├── Conventions/ │ │ │ │ ├── AbstractBaseClassConvention.cs │ │ │ │ ├── BsonClassMapAttributeConvention.cs │ │ │ │ ├── BsonMemberMapAttributeConvention.cs │ │ │ │ ├── IgnoreEmptyEnumerablesConvention.cs │ │ │ │ ├── IgnoreNullOrEmptyStringsConvention.cs │ │ │ │ ├── KeyAttributeConvention.cs │ │ │ │ ├── NavigationSrializationMemberMapConvention.cs │ │ │ │ └── NotMappedAttributeConvention.cs │ │ │ ├── EntityFrameworkConventionPack.cs │ │ │ ├── Serialization/ │ │ │ │ ├── BsonSerializerExtensions.cs │ │ │ │ ├── DenormalizingBsonClassMapSerializer.cs │ │ │ │ └── NavigationBsonMemberMapSerializer.cs │ │ │ └── Update/ │ │ │ ├── DeleteOneModelFactory.cs │ │ │ ├── IMongoDbWriteModelFactory.cs │ │ │ ├── IMongoDbWriteModelFactoryCache.cs │ │ │ ├── IMongoDbWriteModelFactorySelector.cs │ │ │ ├── InsertOneModelFactory.cs │ │ │ ├── MongoDbWriteModelFactory.cs │ │ │ ├── MongoDbWriteModelFactoryCache.cs │ │ │ ├── MongoDbWriteModelFactorySelector.cs │ │ │ └── ReplaceOneModelFactory.cs │ │ ├── Annotations/ │ │ │ ├── DenormalizeAttribute.cs │ │ │ ├── MongoCollectionAttribute.cs │ │ │ └── MongoDatabaseAttribute.cs │ │ ├── Blueshift.EntityFrameworkCore.MongoDB.csproj │ │ ├── ChangeTracking/ │ │ │ └── MongoDbInternalEntityEntryFactory.cs │ │ ├── DbContextOptionsExtensions.cs │ │ ├── DependencyInjection/ │ │ │ └── MongoDbEfServiceCollectionExtensions.cs │ │ ├── Infrastructure/ │ │ │ ├── EntityFrameworkMongoDbServicesBuilder.cs │ │ │ ├── MongoDbContextOptionsBuilder.cs │ │ │ ├── MongoDbContextOptionsBuilderExtensions.cs │ │ │ ├── MongoDbModelValidator.cs │ │ │ └── MongoDbOptionsExtension.cs │ │ ├── ListExtensions.cs │ │ ├── Metadata/ │ │ │ ├── Builders/ │ │ │ │ ├── DocumentDbInternalMetadataBuilderExtensions.cs │ │ │ │ ├── DocumentEntityTypeBuilderExtensions.cs │ │ │ │ ├── DocumentInternalKeyBuilderExtensions.cs │ │ │ │ ├── MongoDbConventionSetBuilder.cs │ │ │ │ ├── MongoDbConventionSetBuilderDependencies.cs │ │ │ │ ├── MongoDbEntityTypeBuilderExtensions.cs │ │ │ │ ├── MongoDbInternalMetadataBuilderExtensions.cs │ │ │ │ └── MongoDbModelBuilderExtensions.cs │ │ │ ├── Conventions/ │ │ │ │ ├── BsonDiscriminatorAttributeConvention.cs │ │ │ │ ├── BsonIgnoreAttributeConvention.cs │ │ │ │ ├── BsonKnownTypesAttributeConvention.cs │ │ │ │ ├── BsonRequiredAttributeConvention.cs │ │ │ │ ├── DocumentPropertyMappingValidationConvention.cs │ │ │ │ ├── MongoCollectionAttributeConvention.cs │ │ │ │ ├── MongoDatabaseConvention.cs │ │ │ │ ├── MongoDbDatabaseGeneratedAttributeConvention.cs │ │ │ │ ├── MongoDbKeyAttributeConvention.cs │ │ │ │ ├── MongoDbRelationshipDiscoveryConvention.cs │ │ │ │ └── OwnedDocumentConvention.cs │ │ │ ├── DocumentAnnotationNames.cs │ │ │ ├── DocumentAnnotations.cs │ │ │ ├── DocumentEntityTypeAnnotations.cs │ │ │ ├── DocumentKeyAnnotations.cs │ │ │ ├── MongoDbAnnotationNames.cs │ │ │ ├── MongoDbEntityTypeAnnotations.cs │ │ │ └── MongoDbModelAnnotations.cs │ │ ├── MethodHelper.cs │ │ ├── MongoDbUtilities.cs │ │ ├── ObjectIdTypeConverter.cs │ │ ├── Properties/ │ │ │ ├── AssemblyInfo.cs │ │ │ ├── Blueshift.EntityFrameworkCore.MongoDB.rd.xml │ │ │ ├── DocumentDbStrings.Designer.cs │ │ │ ├── DocumentDbStrings.cs │ │ │ ├── DocumentDbStrings.resx │ │ │ └── DocumentDbStrings.tt │ │ ├── Query/ │ │ │ ├── EntityLoadInfoFactory.cs │ │ │ ├── ExpressionVisitors/ │ │ │ │ ├── DocumentNavigationRewritingExpressionVisitor.cs │ │ │ │ ├── DocumentNavigationRewritingExpressionVisitorFactory.cs │ │ │ │ ├── IMongoDbDenormalizedCollectionCompensatingVisitorFactory.cs │ │ │ │ ├── MongoDbDenormalizedCollectionCompensatingVisitor.cs │ │ │ │ ├── MongoDbDenormalizedCollectionCompensatingVisitorFactory.cs │ │ │ │ ├── MongoDbEntityQueryableExpressionVisitor.cs │ │ │ │ ├── MongoDbEntityQueryableExpressionVisitorFactory.cs │ │ │ │ ├── MongoDbMemberAccessBindingExpressionVisitor.cs │ │ │ │ └── MongoDbMemberAccessBindingExpressionVisitorFactory.cs │ │ │ ├── Expressions/ │ │ │ │ ├── DocumentQueryExpression.cs │ │ │ │ ├── IDocumentQueryExpressionFactory.cs │ │ │ │ └── MongoDbDocumentQueryExpressionFactory.cs │ │ │ ├── IEntityLoadInfoFactory.cs │ │ │ ├── IValueBufferFactory.cs │ │ │ ├── LinqQueryCompilationContextFactory.cs │ │ │ ├── MongoDbEntityQueryModelVisitor.cs │ │ │ ├── MongoDbEntityQueryModelVisitorDependencies.cs │ │ │ ├── MongoDbEntityQueryModelVisitorFactory.cs │ │ │ ├── MongoDbQueryBuffer.cs │ │ │ ├── MongoDbQueryContext.cs │ │ │ ├── MongoDbQueryContextFactory.cs │ │ │ ├── QueryableLinqOperatorProvider.cs │ │ │ └── ValueBufferFactory.cs │ │ ├── Storage/ │ │ │ ├── IMongoDbConnection.cs │ │ │ ├── IMongoDbTypeMappingSource.cs │ │ │ ├── MongoDbConnection.cs │ │ │ ├── MongoDbDatabase.cs │ │ │ ├── MongoDbDatabaseCreator.cs │ │ │ └── MongoDbTypeMappingSource.cs │ │ └── ValueGeneration/ │ │ ├── HashCodeValueGenerator.cs │ │ ├── IntegerValueGenerator.cs │ │ ├── MongoDbValueGeneratorSelector.cs │ │ └── ObjectIdValueGenerator.cs │ ├── Blueshift.EntityFrameworkCore.MongoDB.SampleDomain/ │ │ ├── Blueshift.EntityFrameworkCore.MongoDB.SampleDomain.csproj │ │ ├── ZooDbContext.cs │ │ ├── ZooDbDependencyInjection.cs │ │ ├── ZooEntityFixture.cs │ │ └── _Comparers.cs │ ├── Blueshift.Identity.MongoDB/ │ │ ├── Blueshift.Identity.MongoDB.csproj │ │ ├── DependencyInjection/ │ │ │ └── IdentityEntityFrameworkMongoDbBuilderExtensions.cs │ │ ├── IdentityMongoDbContext.cs │ │ ├── MongoDbIdentityClaim.cs │ │ ├── MongoDbIdentityRole.cs │ │ ├── MongoDbIdentityUser.cs │ │ ├── MongoDbIdentityUserLogin.cs │ │ ├── MongoDbIdentityUserRole.cs │ │ ├── MongoDbIdentityUserToken.cs │ │ ├── MongoDbRoleStore.cs │ │ └── MongoDbUserStore.cs │ ├── Directory.Build.props │ └── Shared/ │ ├── Check.cs │ ├── CodeAnnotations.cs │ ├── MemberInfoExtensions.cs │ ├── PropertyInfoExtensions.cs │ ├── SharedTypeExtensions.cs │ └── StringBuilderExtensions.cs ├── test/ │ ├── Blueshift.EntityFrameworkCore.MongoDB.Tests/ │ │ ├── Adapter/ │ │ │ ├── Conventions/ │ │ │ │ ├── AbstractClassConventionTest.cs │ │ │ │ ├── IgnoreEmptyEnumerablesConventionTests.cs │ │ │ │ ├── IgnoreNullOrEmptyStringsConventionTests.cs │ │ │ │ └── KeyAttributeConventionTests.cs │ │ │ ├── EntityFrameworkConventionPackTests.cs │ │ │ ├── Serialization/ │ │ │ │ ├── BsonSerializerExtensionsTests.cs │ │ │ │ └── DenormalizingBsonClassMapSerializerTests.cs │ │ │ └── Update/ │ │ │ └── MongoDbWriteModelFactoryTests.cs │ │ ├── ApiConsistencyTest.cs │ │ ├── Blueshift.EntityFrameworkCore.MongoDB.Tests.csproj │ │ ├── Metadata/ │ │ │ ├── Conventions/ │ │ │ │ └── MongoDatabaseConventionTests.cs │ │ │ ├── MongoDbEntityTypeAnnotationsTests.cs │ │ │ └── MongoDbModelAnnotationsTests.cs │ │ ├── MongoDbContextTestBase.cs │ │ ├── MongoDbContextTests.cs │ │ ├── MongoDbUtilitiesTests.cs │ │ ├── Properties/ │ │ │ └── AssemblyInfo.cs │ │ ├── Storage/ │ │ │ ├── MongoDbConnectionTests.cs │ │ │ ├── MongoDbDatabaseCreatorTests.cs │ │ │ ├── MongoDbDatabaseTests.cs │ │ │ └── MongoDbTypeMappingSourceTests.cs │ │ ├── ValueGeneration/ │ │ │ ├── MongoDbValueGeneratorSelectorTests.cs │ │ │ └── ObjectIdValueGeneratorTests.cs │ │ └── xunit.runner.json │ ├── Blueshift.Identity.MongoDB.Tests/ │ │ ├── Blueshift.Identity.MongoDB.Tests.csproj │ │ ├── MongoDbIdentityFixture.cs │ │ ├── MongoDbIdentityTestBase.cs │ │ ├── MongoDbIdentityTestCollection.cs │ │ ├── MongoDbRoleClaimStoreTests.cs │ │ ├── MongoDbRoleStoreTests.cs │ │ ├── MongoDbUserAuthenticationTokenStoreTests.cs │ │ ├── MongoDbUserAuthenticatorKeyStoreTests.cs │ │ ├── MongoDbUserClaimStoreTests.cs │ │ ├── MongoDbUserEmailStoreTests.cs │ │ ├── MongoDbUserLockoutStoreTests.cs │ │ ├── MongoDbUserLoginStoreTests.cs │ │ ├── MongoDbUserPasswordStoreTests.cs │ │ ├── MongoDbUserPhoneNumberStoreTests.cs │ │ ├── MongoDbUserRoleStoreTests.cs │ │ ├── MongoDbUserSecurityStampStoreTests.cs │ │ ├── MongoDbUserStoreTests.cs │ │ ├── MongoDbUserTwoFactorRecoveryCodeStoreTests.cs │ │ ├── MongoDbUserTwoFactorStoreTests.cs │ │ ├── Properties/ │ │ │ └── AssemblyInfo.cs │ │ ├── _Comparers.cs │ │ └── xunit.runner.json │ └── Directory.Build.props └── version.props
SYMBOL INDEX (965 symbols across 155 files)
FILE: src/Blueshift.EntityFrameworkCore.MongoDB.SampleDomain/ZooDbContext.cs
class ZooDbContext (line 15) | [MongoDatabase("zooDb")]
method ZooDbContext (line 22) | public ZooDbContext()
method ZooDbContext (line 27) | public ZooDbContext(DbContextOptions<ZooDbContext> zooDbContextOptions)
method OnConfiguring (line 32) | protected override void OnConfiguring(DbContextOptionsBuilder optionsB...
class Animal (line 52) | [BsonKnownTypes(typeof(Tiger), typeof(PolarBear), typeof(Otter))]
class Tiger (line 77) | [BsonDiscriminator("panthera tigris")]
class PolarBear (line 80) | [BsonDiscriminator("Ursus maritimus")]
class Otter (line 83) | [BsonDiscriminator("Lutrinae")]
class SeaOtter (line 87) | [BsonDiscriminator("Enhydra lutris")]
class EurasianOtter (line 90) | [BsonDiscriminator("Lutra lutra")]
class Employee (line 93) | public class Employee
type ZooTask (line 122) | public enum ZooTask
class Specialty (line 130) | [Owned]
class Enclosure (line 138) | public class Enclosure
class Schedule (line 157) | [Owned]
class ZooAssignment (line 166) | public class ZooAssignment
FILE: src/Blueshift.EntityFrameworkCore.MongoDB.SampleDomain/ZooDbDependencyInjection.cs
class ZooDbDependencyInjection (line 6) | public static class ZooDbDependencyInjection
method AddZooDbContext (line 8) | public static IServiceCollection AddZooDbContext(this IServiceCollecti...
FILE: src/Blueshift.EntityFrameworkCore.MongoDB.SampleDomain/ZooEntityFixture.cs
class ZooExtensions (line 8) | internal static class ZooExtensions
method WithEnclosure (line 10) | public static TAnimal WithEnclosure<TAnimal>(this TAnimal animal, Encl...
method WithSchedule (line 18) | public static Enclosure WithSchedule(this Enclosure enclosure, Action<...
method WithManager (line 25) | public static Employee WithManager(this Employee employee, Employee ma...
method WithApprover (line 32) | public static Schedule WithApprover(this Schedule schedule, Employee m...
method WithAssignment (line 38) | public static Schedule WithAssignment(this Schedule schedule, ZooAssig...
method WithAssignment (line 44) | public static Schedule WithAssignment(
class ZooEntityFixture (line 57) | public class ZooEntityFixture
method ZooEntityFixture (line 59) | static ZooEntityFixture()
class ZooEntities (line 67) | public class ZooEntities
method ZooEntities (line 69) | public ZooEntities()
FILE: src/Blueshift.EntityFrameworkCore.MongoDB.SampleDomain/_Comparers.cs
class AnimalComparer (line 7) | public class AnimalComparer : IComparer<Animal>
method Compare (line 9) | public int Compare(Animal x, Animal y)
class BaseEqualityComparer (line 15) | public abstract class BaseEqualityComparer<T> : EqualityComparer<T>
method GetHashCode (line 17) | public override int GetHashCode(T obj)
method Equals (line 20) | public sealed override bool Equals(T item1, T item2)
method MemberwiseEquals (line 25) | protected abstract bool MemberwiseEquals(T item1, T item2);
class EqualityComparerExtensions (line 28) | public static class EqualityComparerExtensions
method CompareCollections (line 30) | public static bool CompareCollections<T>(
class EmployeeEqualityComparer (line 39) | public class EmployeeEqualityComparer : BaseEqualityComparer<Employee>
method WithDirectReportsComparer (line 47) | public EmployeeEqualityComparer WithDirectReportsComparer(Action<Emplo...
method WithManagerComparer (line 54) | public EmployeeEqualityComparer WithManagerComparer(Action<EmployeeEqu...
method MemberwiseEquals (line 61) | protected override bool MemberwiseEquals(Employee employee1, Employee ...
class SpecialtyEqualityComparer (line 71) | public class SpecialtyEqualityComparer : BaseEqualityComparer<Specialty>
method MemberwiseEquals (line 73) | protected override bool MemberwiseEquals(Specialty specialty1, Special...
class AnimalEqualityComparer (line 78) | public class AnimalEqualityComparer : BaseEqualityComparer<Animal>
method MemberwiseEquals (line 82) | protected override bool MemberwiseEquals(Animal animal1, Animal animal2)
method WithEnclosureEqualityComparer (line 92) | public AnimalEqualityComparer WithEnclosureEqualityComparer(Action<Enc...
class EnclosureEqualityComparer (line 100) | public class EnclosureEqualityComparer : BaseEqualityComparer<Enclosure>
method MemberwiseEquals (line 106) | protected override bool MemberwiseEquals(Enclosure enclosure1, Enclosu...
method WithAnimalEqualityComparer (line 113) | public EnclosureEqualityComparer WithAnimalEqualityComparer(Action<Ani...
method ConfigureWeeklyScheduleEqualityComparer (line 120) | public EnclosureEqualityComparer ConfigureWeeklyScheduleEqualityComparer(
class ScheduleEqualityComparer (line 128) | public class ScheduleEqualityComparer : BaseEqualityComparer<Schedule>
method MemberwiseEquals (line 135) | protected override bool MemberwiseEquals(Schedule schedule1, Schedule ...
method WithApproverEqualityComparer (line 139) | public ScheduleEqualityComparer WithApproverEqualityComparer(
method ConfigureZooAssignmentEqualityComparer (line 147) | public ScheduleEqualityComparer ConfigureZooAssignmentEqualityComparer(
class ZooAssignmentEqualityComparer (line 155) | public class ZooAssignmentEqualityComparer : BaseEqualityComparer<ZooAss...
method MemberwiseEquals (line 159) | protected override bool MemberwiseEquals(ZooAssignment zooAssignment1,...
method WithEmployeeEqualityComparer (line 164) | public ZooAssignmentEqualityComparer WithEmployeeEqualityComparer()
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Conventions/AbstractBaseClassConvention.cs
class AbstractBaseClassConvention (line 13) | public class AbstractBaseClassConvention : BsonClassMapAttributeConventi...
method Apply (line 21) | protected override void Apply(BsonClassMap classMap, BsonKnownTypesAtt...
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Conventions/BsonClassMapAttributeConvention.cs
class BsonClassMapAttributeConvention (line 18) | public abstract class BsonClassMapAttributeConvention<TAttribute> : Conv...
method BsonClassMapAttributeConvention (line 25) | protected BsonClassMapAttributeConvention()
method Apply (line 37) | public virtual void Apply(BsonClassMap classMap)
method Apply (line 54) | protected abstract void Apply([NotNull] BsonClassMap classMap, [NotNul...
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Conventions/BsonMemberMapAttributeConvention.cs
class BsonMemberMapAttributeConvention (line 16) | public abstract class BsonMemberMapAttributeConvention<TAttribute> : Con...
method BsonMemberMapAttributeConvention (line 22) | protected BsonMemberMapAttributeConvention()
method Apply (line 32) | public virtual void Apply([NotNull] BsonMemberMap memberMap)
method Apply (line 48) | protected abstract void Apply([NotNull] BsonMemberMap memberMap, [NotN...
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Conventions/IgnoreEmptyEnumerablesConvention.cs
class IgnoreEmptyEnumerablesConvention (line 14) | public class IgnoreEmptyEnumerablesConvention : ConventionBase, IMemberM...
method IgnoreEmptyEnumerablesConvention (line 19) | public IgnoreEmptyEnumerablesConvention()
method Apply (line 28) | public virtual void Apply([NotNull] BsonMemberMap memberMap)
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Conventions/IgnoreNullOrEmptyStringsConvention.cs
class IgnoreNullOrEmptyStringsConvention (line 12) | public class IgnoreNullOrEmptyStringsConvention : ConventionBase, IMembe...
method IgnoreNullOrEmptyStringsConvention (line 17) | public IgnoreNullOrEmptyStringsConvention()
method Apply (line 26) | public virtual void Apply([NotNull] BsonMemberMap memberMap)
method SetShouldSerializeMethod (line 35) | private static void SetShouldSerializeMethod(BsonMemberMap memberMap)
method ShouldSerializeIfNotEmpty (line 48) | private static void ShouldSerializeIfNotEmpty(BsonMemberMap memberMap)
method ShouldSerializeIfNotDefault (line 51) | private static void ShouldSerializeIfNotDefault(BsonMemberMap memberMa...
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Conventions/KeyAttributeConvention.cs
class KeyAttributeConvention (line 11) | public class KeyAttributeConvention : BsonMemberMapAttributeConvention<K...
method Apply (line 18) | protected override void Apply(BsonMemberMap memberMap, KeyAttribute at...
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Conventions/NavigationSrializationMemberMapConvention.cs
class NavigationSrializationMemberMapConvention (line 18) | public class NavigationSrializationMemberMapConvention : ConventionBase,...
method Apply (line 25) | public void Apply(BsonMemberMap memberMap)
method HasIdMember (line 38) | private bool HasIdMember(Type type)
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Conventions/NotMappedAttributeConvention.cs
class NotMappedAttributeConvention (line 10) | public class NotMappedAttributeConvention : BsonMemberMapAttributeConven...
method Apply (line 17) | protected override void Apply(BsonMemberMap memberMap, NotMappedAttrib...
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/EntityFrameworkConventionPack.cs
class EntityFrameworkConventionPack (line 11) | public class EntityFrameworkConventionPack : ConventionPack
method Register (line 17) | public static void Register(Func<Type, bool> typeFilter)
method EntityFrameworkConventionPack (line 30) | private EntityFrameworkConventionPack()
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Serialization/BsonSerializerExtensions.cs
class BsonSerializerExtensions (line 15) | public static class BsonSerializerExtensions
method AsDenormalizingBsonClassMapSerializer (line 24) | public static IBsonSerializer AsDenormalizingBsonClassMapSerializer(
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Serialization/DenormalizingBsonClassMapSerializer.cs
class DenormalizingBsonClassMapSerializer (line 17) | public class DenormalizingBsonClassMapSerializer<TClass> : BsonClassMapS...
method DenormalizingBsonClassMapSerializer (line 28) | public DenormalizingBsonClassMapSerializer(
method Serialize (line 47) | public override void Serialize(BsonSerializationContext context, BsonS...
method SerializeClass (line 67) | private void SerializeClass(BsonSerializationContext context, BsonSeri...
method SerializeMember (line 88) | private void SerializeMember(BsonSerializationContext context, TClass ...
method ShouldSerializeDiscriminator (line 100) | private bool ShouldSerializeDiscriminator(Type nominalType)
method SerializeDiscriminator (line 103) | private void SerializeDiscriminator(BsonSerializationContext context, ...
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Serialization/NavigationBsonMemberMapSerializer.cs
class NavigationBsonMemberMapSerializer (line 15) | public class NavigationBsonMemberMapSerializer<TClass> : IBsonSerializer...
method NavigationBsonMemberMapSerializer (line 23) | public NavigationBsonMemberMapSerializer(BsonMemberMap bsonMemberMap)
method Deserialize (line 45) | TClass IBsonSerializer<TClass>.Deserialize(BsonDeserializationContext ...
method Serialize (line 49) | public void Serialize(BsonSerializationContext context, BsonSerializat...
method Deserialize (line 53) | public object Deserialize(BsonDeserializationContext context, BsonDese...
method Serialize (line 57) | public void Serialize(BsonSerializationContext context, BsonSerializat...
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Update/DeleteOneModelFactory.cs
class DeleteOneModelFactory (line 14) | public class DeleteOneModelFactory<TEntity> : MongoDbWriteModelFactory<T...
method DeleteOneModelFactory (line 21) | public DeleteOneModelFactory(
method CreateWriteModel (line 36) | public override WriteModel<TEntity> CreateWriteModel(IUpdateEntry upda...
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Update/IMongoDbWriteModelFactory.cs
type IMongoDbWriteModelFactory (line 11) | public interface IMongoDbWriteModelFactory<TEntity>
method CreateWriteModel (line 18) | WriteModel<TEntity> CreateWriteModel([NotNull] IUpdateEntry updateEntry);
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Update/IMongoDbWriteModelFactoryCache.cs
type IMongoDbWriteModelFactoryCache (line 11) | public interface IMongoDbWriteModelFactoryCache
method GetOrAdd (line 24) | IMongoDbWriteModelFactory<TEntity> GetOrAdd<TEntity>(
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Update/IMongoDbWriteModelFactorySelector.cs
type IMongoDbWriteModelFactorySelector (line 10) | public interface IMongoDbWriteModelFactorySelector
method Select (line 19) | IMongoDbWriteModelFactory<TEntity> Select<TEntity>([NotNull] IUpdateEn...
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Update/InsertOneModelFactory.cs
class InsertOneModelFactory (line 16) | public class InsertOneModelFactory<TEntity> : MongoDbWriteModelFactory<T...
method InsertOneModelFactory (line 24) | public InsertOneModelFactory(
method CreateWriteModel (line 40) | public override WriteModel<TEntity> CreateWriteModel(IUpdateEntry upda...
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Update/MongoDbWriteModelFactory.cs
class MongoDbWriteModelFactory (line 22) | public abstract class MongoDbWriteModelFactory<TEntity> : IMongoDbWriteM...
method MongoDbWriteModelFactory (line 40) | protected MongoDbWriteModelFactory(
method CreateWriteModel (line 60) | public abstract WriteModel<TEntity> CreateWriteModel(IUpdateEntry upda...
method GetLookupFilter (line 67) | protected FilterDefinition<TEntity> GetLookupFilter([NotNull] IUpdateE...
method UpdateDbGeneratedProperties (line 90) | protected void UpdateDbGeneratedProperties(InternalEntityEntry interna...
method GetPropertyFilterDefinition (line 102) | private FilterDefinition<TEntity> GetPropertyFilterDefinition(
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Update/MongoDbWriteModelFactoryCache.cs
class MongoDbWriteModelFactoryCache (line 13) | public class MongoDbWriteModelFactoryCache : IMongoDbWriteModelFactoryCache
method GetOrAdd (line 29) | public IMongoDbWriteModelFactory<TEntity> GetOrAdd<TEntity>(
type CacheKey (line 41) | private struct CacheKey : IEquatable<CacheKey>
method CacheKey (line 46) | public CacheKey(
method Equals (line 58) | public override bool Equals(object obj)
method Equals (line 61) | public bool Equals(CacheKey other)
method GetHashCode (line 65) | public override int GetHashCode()
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Update/MongoDbWriteModelFactorySelector.cs
class MongoDbWriteModelFactorySelector (line 16) | public class MongoDbWriteModelFactorySelector : IMongoDbWriteModelFactor...
method MongoDbWriteModelFactorySelector (line 27) | public MongoDbWriteModelFactorySelector(
method Select (line 42) | public IMongoDbWriteModelFactory<TEntity> Select<TEntity>(IUpdateEntry...
method Create (line 48) | private IMongoDbWriteModelFactory<TEntity> Create<TEntity>(
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Update/ReplaceOneModelFactory.cs
class ReplaceOneModelFactory (line 16) | public class ReplaceOneModelFactory<TEntity> : MongoDbWriteModelFactory<...
method ReplaceOneModelFactory (line 26) | public ReplaceOneModelFactory(
method CreateWriteModel (line 42) | public override WriteModel<TEntity> CreateWriteModel(IUpdateEntry upda...
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Annotations/DenormalizeAttribute.cs
class DenormalizeAttribute (line 8) | [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property)]
method DenormalizeAttribute (line 15) | public DenormalizeAttribute(params string[] memberNames)
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Annotations/MongoCollectionAttribute.cs
class MongoCollectionAttribute (line 11) | [AttributeUsage(AttributeTargets.Class)]
method MongoCollectionAttribute (line 18) | public MongoCollectionAttribute([NotNull] string collectionName)
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Annotations/MongoDatabaseAttribute.cs
class MongoDatabaseAttribute (line 12) | [AttributeUsage(AttributeTargets.Class)]
method MongoDatabaseAttribute (line 19) | public MongoDatabaseAttribute([NotNull] string database)
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/ChangeTracking/MongoDbInternalEntityEntryFactory.cs
class MongoDbInternalEntityEntryFactory (line 11) | public class MongoDbInternalEntityEntryFactory : InternalEntityEntryFactory
method Create (line 14) | public override InternalEntityEntry Create(
method Create (line 28) | public override InternalEntityEntry Create(
method CreateValueBuffer (line 34) | private ValueBuffer CreateValueBuffer(IEntityType entityType, object e...
method GetPropertyValue (line 46) | private object GetPropertyValue(object entity, IProperty property)
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/DependencyInjection/MongoDbEfServiceCollectionExtensions.cs
class MongoDbEfServiceCollectionExtensions (line 16) | public static class MongoDbEfServiceCollectionExtensions
method MongoDbEfServiceCollectionExtensions (line 18) | static MongoDbEfServiceCollectionExtensions()
method AddEntityFrameworkMongoDb (line 34) | public static IServiceCollection AddEntityFrameworkMongoDb([NotNull] t...
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Infrastructure/EntityFrameworkMongoDbServicesBuilder.cs
class EntityFrameworkMongoDbServicesBuilder (line 28) | public class EntityFrameworkMongoDbServicesBuilder : EntityFrameworkServ...
method EntityFrameworkMongoDbServicesBuilder (line 44) | public EntityFrameworkMongoDbServicesBuilder([NotNull] IServiceCollect...
method GetServiceCharacteristics (line 52) | protected override ServiceCharacteristics GetServiceCharacteristics(Ty...
method TryAddCoreServices (line 62) | public override EntityFrameworkServicesBuilder TryAddCoreServices()
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Infrastructure/MongoDbContextOptionsBuilder.cs
class MongoDbContextOptionsBuilder (line 19) | public class MongoDbContextOptionsBuilder
method MongoDbContextOptionsBuilder (line 25) | public MongoDbContextOptionsBuilder([NotNull] DbContextOptionsBuilder ...
method UseDatabase (line 40) | public MongoDbContextOptionsBuilder UseDatabase([NotNull] string datab...
method CloneExtension (line 53) | protected virtual MongoDbOptionsExtension CloneExtension()
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Infrastructure/MongoDbContextOptionsBuilderExtensions.cs
class MongoDbContextOptionsBuilderExtensions (line 14) | public static class MongoDbContextOptionsBuilderExtensions
method UseMongoDb (line 23) | public static DbContextOptionsBuilder UseMongoDb(
method UseMongoDb (line 41) | public static DbContextOptionsBuilder UseMongoDb(
method UseMongoDb (line 59) | public static DbContextOptionsBuilder UseMongoDb(
method UseMongoDb (line 77) | public static DbContextOptionsBuilder UseMongoDb(
method SetupMongoDb (line 88) | private static DbContextOptionsBuilder SetupMongoDb(
method GetOrCreateExtension (line 104) | private static MongoDbOptionsExtension GetOrCreateExtension([NotNull] ...
method ConfigureWarnings (line 112) | private static void ConfigureWarnings([NotNull] DbContextOptionsBuilde...
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Infrastructure/MongoDbModelValidator.cs
class MongoDbModelValidator (line 19) | public class MongoDbModelValidator : ModelValidator
method MongoDbModelValidator (line 26) | public MongoDbModelValidator(
method Validate (line 37) | public override void Validate(IModel model)
method ValidateNoShadowKeys (line 46) | protected override void ValidateNoShadowKeys(IModel model)
method ValidateOwnership (line 86) | protected override void ValidateOwnership(IModel model)
method EnsureDistinctCollectionNames (line 128) | protected virtual void EnsureDistinctCollectionNames([NotNull] IModel ...
method ValidateDerivedTypes (line 151) | protected virtual void ValidateDerivedTypes([NotNull] IModel model)
method ValidateDiscriminator (line 163) | private void ValidateDiscriminator(IEntityType entityType, ISet<Tuple<...
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Infrastructure/MongoDbOptionsExtension.cs
class MongoDbOptionsExtension (line 18) | public class MongoDbOptionsExtension : IDbContextOptionsExtension
method MongoDbOptionsExtension (line 28) | public MongoDbOptionsExtension([CanBeNull]MongoDbOptionsExtension exis...
method ApplyServices (line 121) | public virtual bool ApplyServices(IServiceCollection services)
method GetServiceProviderHashCode (line 131) | public virtual long GetServiceProviderHashCode() => 0;
method Validate (line 137) | public virtual void Validate(IDbContextOptions options)
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/ListExtensions.cs
class ListExtensions (line 13) | public static class ListExtensions
method InsertBefore (line 23) | public static IList<T> InsertBefore<T, TExisting>([NotNull] this IList...
method Replace (line 46) | public static IList<TBase> Replace<TBase, TReplacement>([NotNull] this...
method With (line 67) | public static IList<T> With<T>([NotNull] this IList<T> list,
method Without (line 83) | public static IList<T> Without<T>([NotNull] this IList<T> list, Func<T...
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Builders/DocumentDbInternalMetadataBuilderExtensions.cs
class DocumentInternalMetadataBuilderExtensions (line 13) | public static class DocumentInternalMetadataBuilderExtensions
method Document (line 19) | public static DocumentEntityTypeAnnotations Document([NotNull] this In...
method Document (line 26) | public static DocumentEntityTypeAnnotations Document([NotNull] this En...
method Document (line 33) | public static DocumentEntityTypeAnnotations Document([NotNull] this En...
method Document (line 40) | public static DocumentEntityTypeAnnotations Document([NotNull] this IE...
method Document (line 47) | public static DocumentKeyAnnotations Document([NotNull] this InternalK...
method Document (line 54) | public static DocumentKeyAnnotations Document([NotNull] this Key key)
method Document (line 61) | public static DocumentKeyAnnotations Document([NotNull] this IKey key)
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Builders/DocumentEntityTypeBuilderExtensions.cs
class DocumentEntityTypeBuilderExtensions (line 12) | public static class DocumentEntityTypeBuilderExtensions
method IsDocumentComplexType (line 23) | public static EntityTypeBuilder IsDocumentComplexType(
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Builders/DocumentInternalKeyBuilderExtensions.cs
class DocumentInternalKeyBuilderExtensions (line 11) | public static class DocumentInternalKeyBuilderExtensions
method IsDocumentOwnershipKey (line 17) | public static InternalKeyBuilder IsDocumentOwnershipKey(
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Builders/MongoDbConventionSetBuilder.cs
class MongoDbConventionSetBuilder (line 14) | public class MongoDbConventionSetBuilder : IConventionSetBuilder
method MongoDbConventionSetBuilder (line 22) | public MongoDbConventionSetBuilder(
method AddConventions (line 33) | public virtual ConventionSet AddConventions(ConventionSet conventionSet)
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Builders/MongoDbConventionSetBuilderDependencies.cs
class MongoDbConventionSetBuilderDependencies (line 28) | public class MongoDbConventionSetBuilderDependencies
method MongoDbConventionSetBuilderDependencies (line 37) | public MongoDbConventionSetBuilderDependencies(
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Builders/MongoDbEntityTypeBuilderExtensions.cs
class MongoDbEntityTypeBuilderExtensions (line 12) | public static class MongoDbEntityTypeBuilderExtensions
method ForMongoDbFromCollection (line 20) | public static EntityTypeBuilder ForMongoDbFromCollection(
method ForMongoDbHasDiscriminator (line 37) | public static EntityTypeBuilder ForMongoDbHasDiscriminator(
method ForMongoDbDiscriminatorIsRequired (line 56) | public static EntityTypeBuilder ForMongoDbDiscriminatorIsRequired(
method ForMongoDbIsRootType (line 74) | public static EntityTypeBuilder ForMongoDbIsRootType(
method ForMongoDbAssignIdOnInsert (line 93) | public static EntityTypeBuilder ForMongoDbAssignIdOnInsert(
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Builders/MongoDbInternalMetadataBuilderExtensions.cs
class MongoDbInternalMetadataBuilderExtensions (line 15) | public static class MongoDbInternalMetadataBuilderExtensions
method MongoDb (line 21) | public static MongoDbEntityTypeAnnotations MongoDb([NotNull] this Inte...
method MongoDb (line 28) | public static MongoDbEntityTypeAnnotations MongoDb([NotNull] this Enti...
method MongoDb (line 35) | public static MongoDbEntityTypeAnnotations MongoDb([NotNull] this IEnt...
method MongoDb (line 42) | public static MongoDbEntityTypeAnnotations MongoDb([NotNull] this IMut...
method MongoDb (line 49) | public static MongoDbModelAnnotations MongoDb([NotNull] this InternalM...
method MongoDb (line 56) | public static MongoDbModelAnnotations MongoDb([NotNull] this ModelBuil...
method MongoDb (line 63) | public static MongoDbModelAnnotations MongoDb([NotNull] this IModel mo...
method MongoDb (line 70) | public static MongoDbModelAnnotations MongoDb([NotNull] this IMutableM...
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Builders/MongoDbModelBuilderExtensions.cs
class MongoDbModelBuilderExtensions (line 10) | public static class MongoDbModelBuilderExtensions
method ForMongoDbFromDatabase (line 18) | public static ModelBuilder ForMongoDbFromDatabase(this ModelBuilder mo...
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Conventions/BsonDiscriminatorAttributeConvention.cs
class BsonDiscriminatorAttributeConvention (line 10) | public class BsonDiscriminatorAttributeConvention : EntityTypeAttributeC...
method Apply (line 13) | public override InternalEntityTypeBuilder Apply(InternalEntityTypeBuil...
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Conventions/BsonIgnoreAttributeConvention.cs
class BsonIgnoreAttributeConvention (line 16) | public class BsonIgnoreAttributeConvention : IEntityTypeAddedConvention
method Apply (line 22) | public virtual InternalEntityTypeBuilder Apply(InternalEntityTypeBuild...
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Conventions/BsonKnownTypesAttributeConvention.cs
class BsonKnownTypesAttributeConvention (line 12) | public class BsonKnownTypesAttributeConvention : EntityTypeAttributeConv...
method Apply (line 15) | public override InternalEntityTypeBuilder Apply(InternalEntityTypeBuil...
method Apply (line 40) | public override InternalEntityTypeBuilder Apply(
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Conventions/BsonRequiredAttributeConvention.cs
class BsonRequiredAttributeConvention (line 13) | public class BsonRequiredAttributeConvention : PropertyAttributeConventi...
method Apply (line 19) | public override InternalPropertyBuilder Apply(InternalPropertyBuilder ...
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Conventions/DocumentPropertyMappingValidationConvention.cs
class DocumentPropertyMappingValidationConvention (line 18) | public class DocumentPropertyMappingValidationConvention : PropertyMappi...
method DocumentPropertyMappingValidationConvention (line 24) | public DocumentPropertyMappingValidationConvention(
method Apply (line 36) | public override InternalModelBuilder Apply(InternalModelBuilder modelB...
method IsMappedPrimitiveProperty (line 132) | protected override bool IsMappedPrimitiveProperty([NotNull] IProperty ...
method FindCandidateNavigationPropertyType (line 136) | protected override Type FindCandidateNavigationPropertyType([NotNull] ...
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Conventions/MongoCollectionAttributeConvention.cs
class MongoCollectionAttributeConvention (line 13) | public class MongoCollectionAttributeConvention : EntityTypeAttributeCon...
method Apply (line 16) | public override InternalEntityTypeBuilder Apply(
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Conventions/MongoDatabaseConvention.cs
class MongoDatabaseConvention (line 21) | public class MongoDatabaseConvention : IModelInitializedConvention
method MongoDatabaseConvention (line 30) | public MongoDatabaseConvention([NotNull] DbContext dbContext)
method Apply (line 44) | public InternalModelBuilder Apply(InternalModelBuilder modelBuilder)
method GetDefaultDatabaseName (line 62) | private string GetDefaultDatabaseName()
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Conventions/MongoDbDatabaseGeneratedAttributeConvention.cs
class MongoDbDatabaseGeneratedAttributeConvention (line 10) | public class MongoDbDatabaseGeneratedAttributeConvention : DatabaseGener...
method Apply (line 13) | public override InternalPropertyBuilder Apply(
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Conventions/MongoDbKeyAttributeConvention.cs
class MongoDbKeyAttributeConvention (line 16) | public class MongoDbKeyAttributeConvention : KeyAttributeConvention
method Apply (line 21) | public override InternalPropertyBuilder Apply(InternalPropertyBuilder ...
method Apply (line 32) | public override InternalModelBuilder Apply(InternalModelBuilder modelB...
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Conventions/MongoDbRelationshipDiscoveryConvention.cs
class MongoDbRelationshipDiscoveryConvention (line 11) | public class MongoDbRelationshipDiscoveryConvention : RelationshipDiscov...
method MongoDbRelationshipDiscoveryConvention (line 14) | public MongoDbRelationshipDiscoveryConvention(
method Apply (line 22) | InternalRelationshipBuilder IForeignKeyOwnershipChangedConvention.Appl...
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Conventions/OwnedDocumentConvention.cs
class OwnedDocumentConvention (line 21) | public class OwnedDocumentConvention :
method Apply (line 30) | public InternalEntityTypeBuilder Apply(InternalEntityTypeBuilder entit...
method Apply (line 46) | public bool Apply(
method Apply (line 56) | public InternalKeyBuilder Apply(InternalKeyBuilder keyBuilder)
method Apply (line 64) | public void Apply(InternalEntityTypeBuilder entityTypeBuilder, Key key)
method Apply (line 70) | public InternalRelationshipBuilder Apply(InternalRelationshipBuilder r...
method Apply (line 88) | public InternalModelBuilder Apply(InternalModelBuilder modelBuilder)
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/DocumentAnnotationNames.cs
class DocumentAnnotationNames (line 7) | public class DocumentAnnotationNames
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/DocumentAnnotations.cs
class DocumentAnnotations (line 12) | public class DocumentAnnotations<TAnnotatable>
method DocumentAnnotations (line 19) | protected DocumentAnnotations([NotNull] TAnnotatable metadata)
method GetAnnotation (line 41) | public virtual T GetAnnotation<T>([CanBeNull] string annotationName)
method SetAnnotation (line 48) | public virtual bool SetAnnotation<T>([NotNull] string annotationName, ...
method CanSetAnnotation (line 59) | public virtual bool CanSetAnnotation([NotNull] string annotationName, ...
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/DocumentEntityTypeAnnotations.cs
class DocumentEntityTypeAnnotations (line 12) | public class DocumentEntityTypeAnnotations : DocumentAnnotations<IEntity...
method DocumentEntityTypeAnnotations (line 18) | public DocumentEntityTypeAnnotations([NotNull] IEntityType entityType)
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/DocumentKeyAnnotations.cs
class DocumentKeyAnnotations (line 10) | public class DocumentKeyAnnotations : DocumentAnnotations<IKey>
method DocumentKeyAnnotations (line 16) | public DocumentKeyAnnotations([NotNull] IKey key)
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/MongoDbAnnotationNames.cs
class MongoDbAnnotationNames (line 7) | public class MongoDbAnnotationNames
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/MongoDbEntityTypeAnnotations.cs
class MongoDbEntityTypeAnnotations (line 9) | public class MongoDbEntityTypeAnnotations : DocumentEntityTypeAnnotations
method MongoDbEntityTypeAnnotations (line 12) | public MongoDbEntityTypeAnnotations([NotNull] IEntityType entityType)
method GetOrCreateCollectionSettings (line 91) | private MongoCollectionSettings GetOrCreateCollectionSettings()
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/MongoDbModelAnnotations.cs
class MongoDbModelAnnotations (line 13) | public class MongoDbModelAnnotations : DocumentAnnotations<IModel>
method MongoDbModelAnnotations (line 19) | public MongoDbModelAnnotations([NotNull] IModel model)
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/MethodHelper.cs
class MethodHelper (line 11) | public static class MethodHelper
method GetMethodInfo (line 18) | public static MethodInfo GetMethodInfo(Expression<Action> delegateExpr...
method GetMethodInfo (line 28) | public static MethodInfo GetMethodInfo<TInstance>(Expression<Action<TI...
method GetGenericMethodDefinition (line 37) | public static MethodInfo GetGenericMethodDefinition(Expression<Action>...
method GetGenericMethodDefinition (line 48) | public static MethodInfo GetGenericMethodDefinition<T>(Expression<Func...
method GetGenericMethodDefinition (line 60) | public static MethodInfo GetGenericMethodDefinition<TIn, TOut>(Express...
method GetConstructor (line 71) | public static ConstructorInfo GetConstructor<T>(Expression<Func<T>> ne...
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/MongoDbUtilities.cs
class MongoDbUtilities (line 15) | public static class MongoDbUtilities
method ToLowerCamelCase (line 27) | public static string ToLowerCamelCase([NotNull] string value)
method Pluralize (line 36) | public static string Pluralize([NotNull] string value)
method IsDocumentRootEntityType (line 48) | public static bool IsDocumentRootEntityType(this IEntityType entityType)
method GetMongoDbCollectionEntityType (line 63) | public static IEntityType GetMongoDbCollectionEntityType(this IEntityT...
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/ObjectIdTypeConverter.cs
class ObjectIdTypeConverter (line 12) | public class ObjectIdTypeConverter : TypeConverter
method CanConvertFrom (line 20) | public override bool CanConvertFrom(ITypeDescriptorContext context, Ty...
method ConvertFrom (line 30) | public override object ConvertFrom(ITypeDescriptorContext context, Cul...
method CanConvertTo (line 45) | public override bool CanConvertTo(ITypeDescriptorContext context, Type...
method ConvertTo (line 56) | public override object ConvertTo(ITypeDescriptorContext context, Cultu...
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Properties/DocumentDbStrings.Designer.cs
class DocumentDbStrings (line 13) | public static class DocumentDbStrings
method OrphanedNestedDocument (line 23) | public static string OrphanedNestedDocument(
method OrphanedNestedDocumentSensitive (line 33) | public static string OrphanedNestedDocumentSensitive(
method QueryRootNestedEntityType (line 44) | public static string QueryRootNestedEntityType(
method UnableToDiscriminate (line 54) | public static string UnableToDiscriminate([CanBeNull] object entityType)
method GetString (line 59) | private static string GetString(string name, params string[] formatter...
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Query/EntityLoadInfoFactory.cs
class EntityLoadInfoFactory (line 12) | public class EntityLoadInfoFactory : IEntityLoadInfoFactory
method EntityLoadInfoFactory (line 23) | public EntityLoadInfoFactory(
method Create (line 32) | public EntityLoadInfo Create(object document, IEntityType entityType, ...
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Query/ExpressionVisitors/DocumentNavigationRewritingExpressionVisitor.cs
class DocumentNavigationRewritingExpressionVisitor (line 30) | public class DocumentNavigationRewritingExpressionVisitor : NavigationRe...
class NavigationJoins (line 42) | private class NavigationJoins : IEnumerable<NavigationJoin>
method Add (line 46) | public void Add(NavigationJoin navigationJoin)
method Remove (line 52) | public bool Remove(NavigationJoin navigationJoin)
method GetEnumerator (line 71) | public IEnumerator<NavigationJoin> GetEnumerator() => _navigationJoi...
method GetEnumerator (line 73) | IEnumerator IEnumerable.GetEnumerator() => _navigationJoins.Keys.Get...
class NavigationJoin (line 76) | private class NavigationJoin
method RemoveNavigationJoin (line 78) | public static void RemoveNavigationJoin(
method NavigationJoin (line 90) | public NavigationJoin(
method NavigationJoin (line 108) | public NavigationJoin(
method NavigationJoin (line 126) | private NavigationJoin(
method Iterate (line 156) | public IEnumerable<NavigationJoin> Iterate()
method Insert (line 166) | public void Insert(QueryModel queryModel)
method Insert (line 185) | private void Insert(QueryModel queryModel, ref int insertionIndex)
method DocumentNavigationRewritingExpressionVisitor (line 204) | public DocumentNavigationRewritingExpressionVisitor([NotNull] EntityQu...
method DocumentNavigationRewritingExpressionVisitor (line 210) | public DocumentNavigationRewritingExpressionVisitor(
method ShouldRewrite (line 227) | protected virtual bool ShouldRewrite(INavigation navigation)
method Rewrite (line 231) | public override void Rewrite(QueryModel queryModel, QueryModel parentQ...
method VisitUnary (line 250) | protected override Expression VisitUnary(UnaryExpression node)
method VisitSubQuery (line 260) | protected override Expression VisitSubQuery(SubQueryExpression express...
method VisitBinary (line 273) | protected override Expression VisitBinary(BinaryExpression node)
method VisitConditional (line 368) | protected override Expression VisitConditional(ConditionalExpression n...
method CreateNullCompositeKey (line 396) | private static NewExpression CreateNullCompositeKey(Expression otherEx...
method VisitMember (line 409) | protected override Expression VisitMember(MemberExpression node)
method NeedsNullCompensation (line 455) | private bool NeedsNullCompensation(Expression expression)
class ContainsDefaultIfEmptyCheckingVisitor (line 492) | private class ContainsDefaultIfEmptyCheckingVisitor : QueryModelVisito...
method VisitResultOperator (line 496) | public override void VisitResultOperator(ResultOperatorBase resultOp...
method VisitMemberAssignment (line 506) | protected override MemberAssignment VisitMemberAssignment(MemberAssign...
method VisitElementInit (line 516) | protected override ElementInit VisitElementInit(ElementInit node)
method VisitNewArray (line 530) | protected override Expression VisitNewArray(NewArrayExpression node)
method VisitMethodCall (line 544) | protected override Expression VisitMethodCall(MethodCallExpression node)
method RewriteNavigationProperties (line 638) | private Expression RewriteNavigationProperties(
class QsreWithNavigationFindingExpressionVisitor (line 721) | private class QsreWithNavigationFindingExpressionVisitor : ExpressionV...
method QsreWithNavigationFindingExpressionVisitor (line 727) | public QsreWithNavigationFindingExpressionVisitor([NotNull] QuerySou...
method VisitMember (line 737) | protected override Expression VisitMember(MemberExpression node)
method VisitMethodCall (line 752) | protected override Expression VisitMethodCall(MethodCallExpression n...
method VisitQuerySourceReference (line 768) | protected override Expression VisitQuerySourceReference(QuerySourceR...
method TryCreateForeignKeyMemberAccess (line 783) | private Expression TryCreateForeignKeyMemberAccess(string propertyName...
method CreateForeignKeyMemberAccess (line 822) | private static Expression CreateForeignKeyMemberAccess(string property...
method CreateSubqueryForNavigations (line 851) | private Expression CreateSubqueryForNavigations(
method CreateVisitorForSubQuery (line 917) | public override NavigationRewritingExpressionVisitor CreateVisitorForS...
method CreateKeyComparisonExpressionForCollectionNavigationSubquery (line 922) | private static Expression CreateKeyComparisonExpressionForCollectionNa...
method RewriteNavigationsIntoJoins (line 952) | private Expression RewriteNavigationsIntoJoins(
method RewriteNavigationIntoGroupJoin (line 1083) | private void RewriteNavigationIntoGroupJoin(
method RewriteSelectManyNavigationsIntoJoins (line 1144) | private Expression RewriteSelectManyNavigationsIntoJoins(
method RewriteSelectManyInsideSubqueryIntoJoins (line 1212) | private Expression RewriteSelectManyInsideSubqueryIntoJoins(
method AdjustQueryCompilationContextStateAfterSelectMany (line 1299) | private void AdjustQueryCompilationContextStateAfterSelectMany(QuerySo...
method BuildJoinFromNavigation (line 1316) | private JoinClause BuildJoinFromNavigation(
method CreateKeyAccessExpression (line 1376) | private static Expression CreateKeyAccessExpression(
method CreatePropertyExpression (line 1389) | private static Expression CreatePropertyExpression(Expression target, ...
method IsCompositeKey (line 1413) | private static bool IsCompositeKey([NotNull] Type type)
method CompensateForNullabilityDifference (line 1420) | private static Expression CompensateForNullabilityDifference(Expressio...
class DocumentNavigationRewritingQueryModelVisitor (line 1435) | private class DocumentNavigationRewritingQueryModelVisitor : Expressio...
method DocumentNavigationRewritingQueryModelVisitor (line 1443) | public DocumentNavigationRewritingQueryModelVisitor(
method VisitMainFromClause (line 1454) | public override void VisitMainFromClause(MainFromClause fromClause, ...
method VisitAdditionalFromClause (line 1472) | public override void VisitAdditionalFromClause(AdditionalFromClause ...
method VisitWhereClause (line 1488) | public override void VisitWhereClause(WhereClause whereClause, Query...
method VisitOrderByClause (line 1498) | public override void VisitOrderByClause(OrderByClause orderByClause,...
method VisitJoinClause (line 1517) | public override void VisitJoinClause(JoinClause joinClause, QueryMod...
method VisitJoinClause (line 1520) | public override void VisitJoinClause(JoinClause joinClause, QueryMod...
method VisitJoinClauseInternal (line 1523) | private void VisitJoinClauseInternal(JoinClause joinClause)
method VisitSelectClause (line 1560) | public override void VisitSelectClause(SelectClause selectClause, Qu...
method VisitResultOperator (line 1577) | public override void VisitResultOperator(ResultOperatorBase resultOp...
method VisitAndAdjustResultOperatorType (line 1639) | private void VisitAndAdjustResultOperatorType<TResultOperator>(
class ProjectionSubqueryInjectingQueryModelVisitor (line 1656) | private class ProjectionSubqueryInjectingQueryModelVisitor : QueryMode...
method ProjectionSubqueryInjectingQueryModelVisitor (line 1660) | public ProjectionSubqueryInjectingQueryModelVisitor(EntityQueryModel...
method VisitSelectClause (line 1665) | public override void VisitSelectClause(SelectClause selectClause, Qu...
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Query/ExpressionVisitors/DocumentNavigationRewritingExpressionVisitorFactory.cs
class DocumentNavigationRewritingExpressionVisitorFactory (line 7) | public class DocumentNavigationRewritingExpressionVisitorFactory : Navig...
method Create (line 10) | public override NavigationRewritingExpressionVisitor Create(EntityQuer...
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Query/ExpressionVisitors/IMongoDbDenormalizedCollectionCompensatingVisitorFactory.cs
type IMongoDbDenormalizedCollectionCompensatingVisitorFactory (line 7) | public interface IMongoDbDenormalizedCollectionCompensatingVisitorFactory
method Create (line 13) | MongoDbDenormalizedCollectionCompensatingVisitor Create();
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Query/ExpressionVisitors/MongoDbDenormalizedCollectionCompensatingVisitor.cs
class MongoDbDenormalizedCollectionCompensatingVisitor (line 20) | public class MongoDbDenormalizedCollectionCompensatingVisitor : RelinqEx...
method VisitBlock (line 23) | protected override Expression VisitBlock(BlockExpression node)
method TryFindAddToCollectionExpression (line 38) | private bool TryFindAddToCollectionExpression(IReadOnlyList<Expression...
method RemoveDenormalizedInstances (line 55) | private static void RemoveDenormalizedInstances(
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Query/ExpressionVisitors/MongoDbDenormalizedCollectionCompensatingVisitorFactory.cs
class MongoDbDenormalizedCollectionCompensatingVisitorFactory (line 4) | public class MongoDbDenormalizedCollectionCompensatingVisitorFactory : I...
method Create (line 7) | public MongoDbDenormalizedCollectionCompensatingVisitor Create()
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Query/ExpressionVisitors/MongoDbEntityQueryableExpressionVisitor.cs
class MongoDbEntityQueryableExpressionVisitor (line 16) | public class MongoDbEntityQueryableExpressionVisitor : EntityQueryableEx...
method MongoDbEntityQueryableExpressionVisitor (line 23) | public MongoDbEntityQueryableExpressionVisitor(
method VisitEntityQueryable (line 39) | protected override Expression VisitEntityQueryable(Type elementType)
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Query/ExpressionVisitors/MongoDbEntityQueryableExpressionVisitorFactory.cs
class MongoDbEntityQueryableExpressionVisitorFactory (line 16) | public class MongoDbEntityQueryableExpressionVisitorFactory : IEntityQue...
method MongoDbEntityQueryableExpressionVisitorFactory (line 25) | public MongoDbEntityQueryableExpressionVisitorFactory(
method Create (line 37) | public virtual ExpressionVisitor Create(
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Query/ExpressionVisitors/MongoDbMemberAccessBindingExpressionVisitor.cs
class MongoDbMemberAccessBindingExpressionVisitor (line 18) | public class MongoDbMemberAccessBindingExpressionVisitor : MemberAccessB...
method MongoDbMemberAccessBindingExpressionVisitor (line 23) | public MongoDbMemberAccessBindingExpressionVisitor(
method VisitMethodCall (line 39) | protected override Expression VisitMethodCall(MethodCallExpression met...
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Query/ExpressionVisitors/MongoDbMemberAccessBindingExpressionVisitorFactory.cs
class MongoDbMemberAccessBindingExpressionVisitorFactory (line 10) | public class MongoDbMemberAccessBindingExpressionVisitorFactory : Member...
method Create (line 13) | public override ExpressionVisitor Create(
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Query/Expressions/DocumentQueryExpression.cs
class DocumentQueryExpression (line 15) | public class DocumentQueryExpression : Expression
method DocumentQueryExpression (line 27) | public DocumentQueryExpression(
method Reduce (line 39) | public override Expression Reduce()
method VisitChildren (line 48) | protected override Expression VisitChildren(ExpressionVisitor visitor)...
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Query/Expressions/IDocumentQueryExpressionFactory.cs
type IDocumentQueryExpressionFactory (line 9) | public interface IDocumentQueryExpressionFactory
method CreateDocumentQueryExpression (line 16) | Expression CreateDocumentQueryExpression(IEntityType entityType);
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Query/Expressions/MongoDbDocumentQueryExpressionFactory.cs
class MongoDbDocumentQueryExpressionFactory (line 15) | public class MongoDbDocumentQueryExpressionFactory : IDocumentQueryExpre...
method MongoDbDocumentQueryExpressionFactory (line 35) | public MongoDbDocumentQueryExpressionFactory(
method CreateDocumentQueryExpression (line 42) | public Expression CreateDocumentQueryExpression(IEntityType entityType)
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Query/IEntityLoadInfoFactory.cs
type IEntityLoadInfoFactory (line 10) | public interface IEntityLoadInfoFactory
method Create (line 20) | EntityLoadInfo Create(
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Query/IValueBufferFactory.cs
type IValueBufferFactory (line 10) | public interface IValueBufferFactory
method CreateFromInstance (line 20) | ValueBuffer CreateFromInstance(
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Query/LinqQueryCompilationContextFactory.cs
class LinqQueryCompilationContextFactory (line 8) | public class LinqQueryCompilationContextFactory : QueryCompilationContex...
method LinqQueryCompilationContextFactory (line 11) | public LinqQueryCompilationContextFactory(
method Create (line 17) | public override QueryCompilationContext Create(bool async)
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Query/MongoDbEntityQueryModelVisitor.cs
class MongoDbEntityQueryModelVisitor (line 19) | public class MongoDbEntityQueryModelVisitor : EntityQueryModelVisitor
method MongoDbEntityQueryModelVisitor (line 26) | public MongoDbEntityQueryModelVisitor(
method VisitSelectClause (line 43) | public override void VisitSelectClause(
method ConvertToRelationshipAssignments (line 77) | private Expression ConvertToRelationshipAssignments(Expression express...
method CallCreateTransparentIdentifier (line 90) | protected override Expression CallCreateTransparentIdentifier(
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Query/MongoDbEntityQueryModelVisitorDependencies.cs
class MongoDbEntityQueryModelVisitorDependencies (line 24) | public class MongoDbEntityQueryModelVisitorDependencies
method MongoDbEntityQueryModelVisitorDependencies (line 46) | public MongoDbEntityQueryModelVisitorDependencies(
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Query/MongoDbEntityQueryModelVisitorFactory.cs
class MongoDbEntityQueryModelVisitorFactory (line 8) | public class MongoDbEntityQueryModelVisitorFactory : EntityQueryModelVis...
method MongoDbEntityQueryModelVisitorFactory (line 11) | public MongoDbEntityQueryModelVisitorFactory(
method Create (line 26) | public override EntityQueryModelVisitor Create(
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Query/MongoDbQueryBuffer.cs
class MongoDbQueryBuffer (line 17) | public class MongoDbQueryBuffer : QueryBuffer
method MongoDbQueryBuffer (line 24) | public MongoDbQueryBuffer(
method IncludeCollection (line 36) | public override void IncludeCollection<TEntity, TRelated, TElement>(
method StartTracking (line 102) | public override void StartTracking(object entity, EntityTrackingInfo e...
method StartTracking (line 112) | public override void StartTracking(object entity, IEntityType entityType)
method LoadEntity (line 117) | private object LoadEntity(object entity, IEntityType entityType, objec...
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Query/MongoDbQueryContext.cs
class MongoDbQueryContext (line 10) | public class MongoDbQueryContext : QueryContext
method MongoDbQueryContext (line 13) | public MongoDbQueryContext(
method BeginTrackingQuery (line 24) | public override void BeginTrackingQuery()
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Query/MongoDbQueryContextFactory.cs
class MongoDbQueryContextFactory (line 9) | public class MongoDbQueryContextFactory : QueryContextFactory
method MongoDbQueryContextFactory (line 14) | public MongoDbQueryContextFactory(
method Create (line 24) | public override QueryContext Create()
method CreateQueryBuffer (line 30) | protected override IQueryBuffer CreateQueryBuffer()
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Query/QueryableLinqOperatorProvider.cs
class QueryableLinqOperatorProvider (line 9) | public class QueryableLinqOperatorProvider : LinqOperatorProvider
method GetAggregateMethod (line 112) | public override MethodInfo GetAggregateMethod(string methodName, Type ...
method MakeSequenceType (line 116) | public override Type MakeSequenceType(Type elementType)
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Query/ValueBufferFactory.cs
class ValueBufferFactory (line 14) | public class ValueBufferFactory : IValueBufferFactory
method CreateFromInstance (line 17) | public ValueBuffer CreateFromInstance(
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Storage/IMongoDbConnection.cs
type IMongoDbConnection (line 11) | public interface IMongoDbConnection
method GetDatabase (line 17) | IMongoDatabase GetDatabase();
method GetDatabaseAsync (line 27) | Task<IMongoDatabase> GetDatabaseAsync(CancellationToken cancellationTo...
method DropDatabase (line 32) | void DropDatabase();
method DropDatabaseAsync (line 39) | Task DropDatabaseAsync(CancellationToken cancellationToken = default(C...
method GetCollection (line 46) | IMongoCollection<TEntity> GetCollection<TEntity>();
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Storage/IMongoDbTypeMappingSource.cs
type IMongoDbTypeMappingSource (line 6) | public interface IMongoDbTypeMappingSource : ITypeMappingSource
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Storage/MongoDbConnection.cs
class MongoDbConnection (line 16) | public class MongoDbConnection : IMongoDbConnection
method MongoDbConnection (line 27) | public MongoDbConnection(
method GetDatabase (line 38) | public virtual IMongoDatabase GetDatabase()
method GetDatabaseAsync (line 42) | public virtual Task<IMongoDatabase> GetDatabaseAsync(CancellationToken...
method DropDatabase (line 46) | public virtual void DropDatabase()
method DropDatabaseAsync (line 50) | public virtual Task DropDatabaseAsync(CancellationToken cancellationTo...
method GetCollection (line 54) | public virtual IMongoCollection<TEntity> GetCollection<TEntity>()
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Storage/MongoDbDatabase.cs
class MongoDbDatabase (line 26) | public class MongoDbDatabase : Database
method MongoDbDatabase (line 46) | public MongoDbDatabase(
method SaveChanges (line 61) | public override int SaveChanges(IReadOnlyList<IUpdateEntry> entries)
method UpdateEntries (line 67) | private int UpdateEntries<TEntity>(IEnumerable<IUpdateEntry> entries)
method GetDocumentUpdateDefinitions (line 77) | private ISet<IUpdateEntry> GetDocumentUpdateDefinitions(IReadOnlyColle...
method SaveChangesAsync (line 111) | public override async Task<int> SaveChangesAsync(
method InvokeUpdateEntriesAsync (line 124) | private Task<int> InvokeUpdateEntriesAsync(IGrouping<IEntityType, IUpd...
method UpdateEntriesAsync (line 128) | private async Task<int> UpdateEntriesAsync<TEntity>(
method CompileAsyncQuery (line 143) | public override Func<QueryContext, IAsyncEnumerable<TResult>> CompileA...
method GetRootDocument (line 146) | private IUpdateEntry GetRootDocument(InternalEntityEntry entry)
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Storage/MongoDbDatabaseCreator.cs
class MongoDbDatabaseCreator (line 14) | public class MongoDbDatabaseCreator : IDatabaseCreator
method MongoDbDatabaseCreator (line 22) | public MongoDbDatabaseCreator([NotNull] IMongoDbConnection mongoDbConn...
method EnsureCreated (line 34) | public virtual bool EnsureCreated()
method EnsureCreatedAsync (line 48) | public virtual async Task<bool> EnsureCreatedAsync(CancellationToken c...
method EnsureDeleted (line 61) | public virtual bool EnsureDeleted()
method EnsureDeletedAsync (line 75) | public virtual async Task<bool> EnsureDeletedAsync(CancellationToken c...
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/Storage/MongoDbTypeMappingSource.cs
class MongoDbTypeMappingSource (line 17) | public class MongoDbTypeMappingSource : TypeMappingSource, IMongoDbTypeM...
method MongoDbTypeMappingSource (line 30) | public MongoDbTypeMappingSource([NotNull] TypeMappingSourceDependencie...
method FindMapping (line 36) | protected override CoreTypeMapping FindMapping(in TypeMappingInfo mapp...
class PassThruTypeMapping (line 49) | private class PassThruTypeMapping : CoreTypeMapping
method PassThruTypeMapping (line 51) | private PassThruTypeMapping(CoreTypeMappingParameters parameters)
method PassThruTypeMapping (line 56) | public PassThruTypeMapping([NotNull] Type clrType)
method Clone (line 61) | public override CoreTypeMapping Clone(ValueConverter converter)
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/ValueGeneration/HashCodeValueGenerator.cs
class HashCodeValueGenerator (line 8) | public class HashCodeValueGenerator : ValueGenerator<int?>
method Next (line 16) | public override int? Next(EntityEntry entry)
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/ValueGeneration/IntegerValueGenerator.cs
class IntegerValueGenerator (line 11) | public class IntegerValueGenerator<TValue> : ValueGenerator<TValue>
method Next (line 21) | public override TValue Next(EntityEntry entry)
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/ValueGeneration/MongoDbValueGeneratorSelector.cs
class MongoDbValueGeneratorSelector (line 12) | public class MongoDbValueGeneratorSelector : ValueGeneratorSelector
method MongoDbValueGeneratorSelector (line 34) | public MongoDbValueGeneratorSelector([NotNull] ValueGeneratorSelectorD...
method Create (line 50) | public override ValueGenerator Create(
FILE: src/Blueshift.EntityFrameworkCore.MongoDB/ValueGeneration/ObjectIdValueGenerator.cs
class ObjectIdValueGenerator (line 10) | public class ObjectIdValueGenerator : ValueGenerator<ObjectId>
method Next (line 17) | public override ObjectId Next(EntityEntry entry)
FILE: src/Blueshift.Identity.MongoDB/DependencyInjection/IdentityEntityFrameworkMongoDbBuilderExtensions.cs
class IdentityEntityFrameworkMongoDbBuilderExtensions (line 14) | public static class IdentityEntityFrameworkMongoDbBuilderExtensions
method AddEntityFrameworkMongoDbStores (line 26) | public static IdentityBuilder AddEntityFrameworkMongoDbStores<TContext...
method AddEntityFrameworkDbStores (line 40) | public static IdentityBuilder AddEntityFrameworkDbStores<TContext, TKe...
method AddMongoDbStores (line 48) | private static void AddMongoDbStores(IServiceCollection services, Type...
method FindGenericBaseType (line 103) | private static TypeInfo FindGenericBaseType(Type currentType, Type gen...
FILE: src/Blueshift.Identity.MongoDB/IdentityMongoDbContext.cs
class IdentityMongoDbContext (line 12) | [MongoDatabase("__identities")]
method IdentityMongoDbContext (line 21) | public IdentityMongoDbContext(DbContextOptions<IdentityMongoDbContext>...
method IdentityMongoDbContext (line 29) | protected IdentityMongoDbContext(DbContextOptions options)
method IdentityMongoDbContext (line 35) | protected IdentityMongoDbContext() { }
method IdentityMongoDbContext (line 58) | public IdentityMongoDbContext(DbContextOptions<IdentityMongoDbContext<...
method IdentityMongoDbContext (line 66) | protected IdentityMongoDbContext(DbContextOptions options)
method IdentityMongoDbContext (line 72) | protected IdentityMongoDbContext() { }
method IdentityMongoDbContext (line 92) | public IdentityMongoDbContext(DbContextOptions<IdentityMongoDbContext<...
method IdentityMongoDbContext (line 101) | protected IdentityMongoDbContext(DbContextOptions options)
method IdentityMongoDbContext (line 107) | protected IdentityMongoDbContext() { }
method IdentityMongoDbContext (line 143) | public IdentityMongoDbContext(DbContextOptions<IdentityMongoDbContext<...
method IdentityMongoDbContext (line 152) | protected IdentityMongoDbContext(DbContextOptions options)
method IdentityMongoDbContext (line 159) | protected IdentityMongoDbContext() { }
method IdentityMongoDbContext (line 188) | public IdentityMongoDbContext(DbContextOptions<IdentityMongoDbContext<...
method IdentityMongoDbContext (line 196) | protected IdentityMongoDbContext(DbContextOptions options)
method IdentityMongoDbContext (line 203) | protected IdentityMongoDbContext() { }
class IdentityMongoDbContext (line 42) | [MongoDatabase("__identities")]
method IdentityMongoDbContext (line 21) | public IdentityMongoDbContext(DbContextOptions<IdentityMongoDbContext>...
method IdentityMongoDbContext (line 29) | protected IdentityMongoDbContext(DbContextOptions options)
method IdentityMongoDbContext (line 35) | protected IdentityMongoDbContext() { }
method IdentityMongoDbContext (line 58) | public IdentityMongoDbContext(DbContextOptions<IdentityMongoDbContext<...
method IdentityMongoDbContext (line 66) | protected IdentityMongoDbContext(DbContextOptions options)
method IdentityMongoDbContext (line 72) | protected IdentityMongoDbContext() { }
method IdentityMongoDbContext (line 92) | public IdentityMongoDbContext(DbContextOptions<IdentityMongoDbContext<...
method IdentityMongoDbContext (line 101) | protected IdentityMongoDbContext(DbContextOptions options)
method IdentityMongoDbContext (line 107) | protected IdentityMongoDbContext() { }
method IdentityMongoDbContext (line 143) | public IdentityMongoDbContext(DbContextOptions<IdentityMongoDbContext<...
method IdentityMongoDbContext (line 152) | protected IdentityMongoDbContext(DbContextOptions options)
method IdentityMongoDbContext (line 159) | protected IdentityMongoDbContext() { }
method IdentityMongoDbContext (line 188) | public IdentityMongoDbContext(DbContextOptions<IdentityMongoDbContext<...
method IdentityMongoDbContext (line 196) | protected IdentityMongoDbContext(DbContextOptions options)
method IdentityMongoDbContext (line 203) | protected IdentityMongoDbContext() { }
class IdentityMongoDbContext (line 81) | [MongoDatabase("__identities")]
method IdentityMongoDbContext (line 21) | public IdentityMongoDbContext(DbContextOptions<IdentityMongoDbContext>...
method IdentityMongoDbContext (line 29) | protected IdentityMongoDbContext(DbContextOptions options)
method IdentityMongoDbContext (line 35) | protected IdentityMongoDbContext() { }
method IdentityMongoDbContext (line 58) | public IdentityMongoDbContext(DbContextOptions<IdentityMongoDbContext<...
method IdentityMongoDbContext (line 66) | protected IdentityMongoDbContext(DbContextOptions options)
method IdentityMongoDbContext (line 72) | protected IdentityMongoDbContext() { }
method IdentityMongoDbContext (line 92) | public IdentityMongoDbContext(DbContextOptions<IdentityMongoDbContext<...
method IdentityMongoDbContext (line 101) | protected IdentityMongoDbContext(DbContextOptions options)
method IdentityMongoDbContext (line 107) | protected IdentityMongoDbContext() { }
method IdentityMongoDbContext (line 143) | public IdentityMongoDbContext(DbContextOptions<IdentityMongoDbContext<...
method IdentityMongoDbContext (line 152) | protected IdentityMongoDbContext(DbContextOptions options)
method IdentityMongoDbContext (line 159) | protected IdentityMongoDbContext() { }
method IdentityMongoDbContext (line 188) | public IdentityMongoDbContext(DbContextOptions<IdentityMongoDbContext<...
method IdentityMongoDbContext (line 196) | protected IdentityMongoDbContext(DbContextOptions options)
method IdentityMongoDbContext (line 203) | protected IdentityMongoDbContext() { }
class IdentityMongoDbContext (line 117) | [MongoDatabase("__identities")]
method IdentityMongoDbContext (line 21) | public IdentityMongoDbContext(DbContextOptions<IdentityMongoDbContext>...
method IdentityMongoDbContext (line 29) | protected IdentityMongoDbContext(DbContextOptions options)
method IdentityMongoDbContext (line 35) | protected IdentityMongoDbContext() { }
method IdentityMongoDbContext (line 58) | public IdentityMongoDbContext(DbContextOptions<IdentityMongoDbContext<...
method IdentityMongoDbContext (line 66) | protected IdentityMongoDbContext(DbContextOptions options)
method IdentityMongoDbContext (line 72) | protected IdentityMongoDbContext() { }
method IdentityMongoDbContext (line 92) | public IdentityMongoDbContext(DbContextOptions<IdentityMongoDbContext<...
method IdentityMongoDbContext (line 101) | protected IdentityMongoDbContext(DbContextOptions options)
method IdentityMongoDbContext (line 107) | protected IdentityMongoDbContext() { }
method IdentityMongoDbContext (line 143) | public IdentityMongoDbContext(DbContextOptions<IdentityMongoDbContext<...
method IdentityMongoDbContext (line 152) | protected IdentityMongoDbContext(DbContextOptions options)
method IdentityMongoDbContext (line 159) | protected IdentityMongoDbContext() { }
method IdentityMongoDbContext (line 188) | public IdentityMongoDbContext(DbContextOptions<IdentityMongoDbContext<...
method IdentityMongoDbContext (line 196) | protected IdentityMongoDbContext(DbContextOptions options)
method IdentityMongoDbContext (line 203) | protected IdentityMongoDbContext() { }
class IdentityMongoDbContext (line 173) | [MongoDatabase("__identities")]
method IdentityMongoDbContext (line 21) | public IdentityMongoDbContext(DbContextOptions<IdentityMongoDbContext>...
method IdentityMongoDbContext (line 29) | protected IdentityMongoDbContext(DbContextOptions options)
method IdentityMongoDbContext (line 35) | protected IdentityMongoDbContext() { }
method IdentityMongoDbContext (line 58) | public IdentityMongoDbContext(DbContextOptions<IdentityMongoDbContext<...
method IdentityMongoDbContext (line 66) | protected IdentityMongoDbContext(DbContextOptions options)
method IdentityMongoDbContext (line 72) | protected IdentityMongoDbContext() { }
method IdentityMongoDbContext (line 92) | public IdentityMongoDbContext(DbContextOptions<IdentityMongoDbContext<...
method IdentityMongoDbContext (line 101) | protected IdentityMongoDbContext(DbContextOptions options)
method IdentityMongoDbContext (line 107) | protected IdentityMongoDbContext() { }
method IdentityMongoDbContext (line 143) | public IdentityMongoDbContext(DbContextOptions<IdentityMongoDbContext<...
method IdentityMongoDbContext (line 152) | protected IdentityMongoDbContext(DbContextOptions options)
method IdentityMongoDbContext (line 159) | protected IdentityMongoDbContext() { }
method IdentityMongoDbContext (line 188) | public IdentityMongoDbContext(DbContextOptions<IdentityMongoDbContext<...
method IdentityMongoDbContext (line 196) | protected IdentityMongoDbContext(DbContextOptions options)
method IdentityMongoDbContext (line 203) | protected IdentityMongoDbContext() { }
FILE: src/Blueshift.Identity.MongoDB/MongoDbIdentityClaim.cs
class MongoDbIdentityClaim (line 10) | [Owned]
method MongoDbIdentityClaim (line 16) | public MongoDbIdentityClaim() { }
method MongoDbIdentityClaim (line 22) | public MongoDbIdentityClaim(Claim claim)
method ToClaim (line 41) | public virtual Claim ToClaim()
method InitializeFromClaim (line 48) | public virtual void InitializeFromClaim(Claim claim)
FILE: src/Blueshift.Identity.MongoDB/MongoDbIdentityRole.cs
class MongoDbIdentityRole (line 16) | [MongoCollection("roles")]
method MongoDbIdentityRole (line 46) | public MongoDbIdentityRole() { }
method MongoDbIdentityRole (line 52) | public MongoDbIdentityRole(string roleName)
method ToString (line 88) | public override string ToString() => RoleName;
class MongoDbIdentityRole (line 26) | [MongoCollection("roles")]
method MongoDbIdentityRole (line 46) | public MongoDbIdentityRole() { }
method MongoDbIdentityRole (line 52) | public MongoDbIdentityRole(string roleName)
method ToString (line 88) | public override string ToString() => RoleName;
class MongoDbIdentityRole (line 38) | [MongoCollection("roles")]
method MongoDbIdentityRole (line 46) | public MongoDbIdentityRole() { }
method MongoDbIdentityRole (line 52) | public MongoDbIdentityRole(string roleName)
method ToString (line 88) | public override string ToString() => RoleName;
FILE: src/Blueshift.Identity.MongoDB/MongoDbIdentityUser.cs
class MongoDbIdentityUser (line 15) | [MongoCollection("users")]
method MongoDbIdentityUser (line 21) | public MongoDbIdentityUser() { }
method MongoDbIdentityUser (line 27) | public MongoDbIdentityUser(string userName) : base(userName) { }
method MongoDbIdentityUser (line 47) | public MongoDbIdentityUser() { }
method MongoDbIdentityUser (line 53) | public MongoDbIdentityUser(string userName) : base(userName) { }
method MongoDbIdentityUser (line 75) | public MongoDbIdentityUser() { }
method MongoDbIdentityUser (line 81) | public MongoDbIdentityUser(string userName)
method ToString (line 190) | public override string ToString() => UserName;
class MongoDbIdentityUser (line 34) | [MongoCollection("users")]
method MongoDbIdentityUser (line 21) | public MongoDbIdentityUser() { }
method MongoDbIdentityUser (line 27) | public MongoDbIdentityUser(string userName) : base(userName) { }
method MongoDbIdentityUser (line 47) | public MongoDbIdentityUser() { }
method MongoDbIdentityUser (line 53) | public MongoDbIdentityUser(string userName) : base(userName) { }
method MongoDbIdentityUser (line 75) | public MongoDbIdentityUser() { }
method MongoDbIdentityUser (line 81) | public MongoDbIdentityUser(string userName)
method ToString (line 190) | public override string ToString() => UserName;
class MongoDbIdentityUser (line 64) | [MongoCollection("users")]
method MongoDbIdentityUser (line 21) | public MongoDbIdentityUser() { }
method MongoDbIdentityUser (line 27) | public MongoDbIdentityUser(string userName) : base(userName) { }
method MongoDbIdentityUser (line 47) | public MongoDbIdentityUser() { }
method MongoDbIdentityUser (line 53) | public MongoDbIdentityUser(string userName) : base(userName) { }
method MongoDbIdentityUser (line 75) | public MongoDbIdentityUser() { }
method MongoDbIdentityUser (line 81) | public MongoDbIdentityUser(string userName)
method ToString (line 190) | public override string ToString() => UserName;
FILE: src/Blueshift.Identity.MongoDB/MongoDbIdentityUserLogin.cs
class MongoDbIdentityUserLogin (line 12) | [Owned]
method MongoDbIdentityUserLogin (line 18) | public MongoDbIdentityUserLogin() { }
method MongoDbIdentityUserLogin (line 24) | public MongoDbIdentityUserLogin(UserLoginInfo userLoginInfo)
method MongoDbIdentityUserLogin (line 41) | public MongoDbIdentityUserLogin() { }
method MongoDbIdentityUserLogin (line 47) | public MongoDbIdentityUserLogin(UserLoginInfo userLoginInfo)
method ToUserLoginInfo (line 76) | public virtual UserLoginInfo ToUserLoginInfo()
method InitializeFromUserLoginInfo (line 83) | public virtual void InitializeFromUserLoginInfo(UserLoginInfo userLogi...
class MongoDbIdentityUserLogin (line 34) | [Owned]
method MongoDbIdentityUserLogin (line 18) | public MongoDbIdentityUserLogin() { }
method MongoDbIdentityUserLogin (line 24) | public MongoDbIdentityUserLogin(UserLoginInfo userLoginInfo)
method MongoDbIdentityUserLogin (line 41) | public MongoDbIdentityUserLogin() { }
method MongoDbIdentityUserLogin (line 47) | public MongoDbIdentityUserLogin(UserLoginInfo userLoginInfo)
method ToUserLoginInfo (line 76) | public virtual UserLoginInfo ToUserLoginInfo()
method InitializeFromUserLoginInfo (line 83) | public virtual void InitializeFromUserLoginInfo(UserLoginInfo userLogi...
FILE: src/Blueshift.Identity.MongoDB/MongoDbIdentityUserRole.cs
class MongoDbIdentityUserRole (line 8) | [Owned]
FILE: src/Blueshift.Identity.MongoDB/MongoDbIdentityUserToken.cs
class MongoDbIdentityUserToken (line 8) | [Owned]
FILE: src/Blueshift.Identity.MongoDB/MongoDbRoleStore.cs
class MongoDbRoleStore (line 19) | public class MongoDbRoleStore : MongoDbRoleStore<MongoDbIdentityRole, Id...
method MongoDbRoleStore (line 27) | public MongoDbRoleStore(IdentityMongoDbContext context, IdentityErrorD...
method MongoDbRoleStore (line 45) | public MongoDbRoleStore(IdentityMongoDbContext<TKey> context, Identity...
method MongoDbRoleStore (line 66) | public MongoDbRoleStore(TContext context, IdentityErrorDescriber descr...
method MongoDbRoleStore (line 89) | public MongoDbRoleStore(TContext context, IdentityErrorDescriber descr...
method MongoDbRoleStore (line 117) | public MongoDbRoleStore(TContext context, IdentityErrorDescriber descr...
method ThrowIfDisposed (line 149) | protected void ThrowIfDisposed()
method Dispose (line 160) | public void Dispose()
method SaveChanges (line 168) | private async Task SaveChanges(CancellationToken cancellationToken)
method CreateAsync (line 182) | public virtual async Task<IdentityResult> CreateAsync(TRole role, Canc...
method UpdateAsync (line 197) | public virtual async Task<IdentityResult> UpdateAsync(TRole role, Canc...
method DeleteAsync (line 221) | public virtual async Task<IdentityResult> DeleteAsync(TRole role, Canc...
method GetRoleIdAsync (line 243) | public virtual Task<string> GetRoleIdAsync(TRole role, CancellationTok...
method GetRoleNameAsync (line 256) | public virtual Task<string> GetRoleNameAsync(TRole role, CancellationT...
method SetRoleNameAsync (line 270) | public virtual Task SetRoleNameAsync(TRole role, string roleName, Canc...
method ConvertIdFromString (line 283) | public virtual TKey ConvertIdFromString(string id)
method ConvertIdToString (line 293) | public virtual string ConvertIdToString(TKey id)
method FindByIdAsync (line 304) | public virtual Task<TRole> FindByIdAsync(string id, CancellationToken ...
method FindByNameAsync (line 318) | public virtual Task<TRole> FindByNameAsync(string normalizedName, Canc...
method GetNormalizedRoleNameAsync (line 331) | public virtual Task<string> GetNormalizedRoleNameAsync(TRole role, Can...
method SetNormalizedRoleNameAsync (line 345) | public virtual Task SetNormalizedRoleNameAsync(TRole role, string norm...
method GetClaimsAsync (line 359) | public virtual async Task<IList<Claim>> GetClaimsAsync(TRole role, Can...
method AddClaimAsync (line 376) | public virtual Task AddClaimAsync(TRole role, Claim claim, Cancellatio...
method CreateRoleClaim (line 391) | protected virtual TClaim CreateRoleClaim(TRole role, Claim claim)
method RemoveClaimAsync (line 405) | public virtual async Task RemoveClaimAsync(TRole role, Claim claim, Ca...
class MongoDbRoleStore (line 37) | public class MongoDbRoleStore<TKey> : MongoDbRoleStore<MongoDbIdentityRo...
method MongoDbRoleStore (line 27) | public MongoDbRoleStore(IdentityMongoDbContext context, IdentityErrorD...
method MongoDbRoleStore (line 45) | public MongoDbRoleStore(IdentityMongoDbContext<TKey> context, Identity...
method MongoDbRoleStore (line 66) | public MongoDbRoleStore(TContext context, IdentityErrorDescriber descr...
method MongoDbRoleStore (line 89) | public MongoDbRoleStore(TContext context, IdentityErrorDescriber descr...
method MongoDbRoleStore (line 117) | public MongoDbRoleStore(TContext context, IdentityErrorDescriber descr...
method ThrowIfDisposed (line 149) | protected void ThrowIfDisposed()
method Dispose (line 160) | public void Dispose()
method SaveChanges (line 168) | private async Task SaveChanges(CancellationToken cancellationToken)
method CreateAsync (line 182) | public virtual async Task<IdentityResult> CreateAsync(TRole role, Canc...
method UpdateAsync (line 197) | public virtual async Task<IdentityResult> UpdateAsync(TRole role, Canc...
method DeleteAsync (line 221) | public virtual async Task<IdentityResult> DeleteAsync(TRole role, Canc...
method GetRoleIdAsync (line 243) | public virtual Task<string> GetRoleIdAsync(TRole role, CancellationTok...
method GetRoleNameAsync (line 256) | public virtual Task<string> GetRoleNameAsync(TRole role, CancellationT...
method SetRoleNameAsync (line 270) | public virtual Task SetRoleNameAsync(TRole role, string roleName, Canc...
method ConvertIdFromString (line 283) | public virtual TKey ConvertIdFromString(string id)
method ConvertIdToString (line 293) | public virtual string ConvertIdToString(TKey id)
method FindByIdAsync (line 304) | public virtual Task<TRole> FindByIdAsync(string id, CancellationToken ...
method FindByNameAsync (line 318) | public virtual Task<TRole> FindByNameAsync(string normalizedName, Canc...
method GetNormalizedRoleNameAsync (line 331) | public virtual Task<string> GetNormalizedRoleNameAsync(TRole role, Can...
method SetNormalizedRoleNameAsync (line 345) | public virtual Task SetNormalizedRoleNameAsync(TRole role, string norm...
method GetClaimsAsync (line 359) | public virtual async Task<IList<Claim>> GetClaimsAsync(TRole role, Can...
method AddClaimAsync (line 376) | public virtual Task AddClaimAsync(TRole role, Claim claim, Cancellatio...
method CreateRoleClaim (line 391) | protected virtual TClaim CreateRoleClaim(TRole role, Claim claim)
method RemoveClaimAsync (line 405) | public virtual async Task RemoveClaimAsync(TRole role, Claim claim, Ca...
class MongoDbRoleStore (line 56) | public class MongoDbRoleStore<TRole, TContext>
method MongoDbRoleStore (line 27) | public MongoDbRoleStore(IdentityMongoDbContext context, IdentityErrorD...
method MongoDbRoleStore (line 45) | public MongoDbRoleStore(IdentityMongoDbContext<TKey> context, Identity...
method MongoDbRoleStore (line 66) | public MongoDbRoleStore(TContext context, IdentityErrorDescriber descr...
method MongoDbRoleStore (line 89) | public MongoDbRoleStore(TContext context, IdentityErrorDescriber descr...
method MongoDbRoleStore (line 117) | public MongoDbRoleStore(TContext context, IdentityErrorDescriber descr...
method ThrowIfDisposed (line 149) | protected void ThrowIfDisposed()
method Dispose (line 160) | public void Dispose()
method SaveChanges (line 168) | private async Task SaveChanges(CancellationToken cancellationToken)
method CreateAsync (line 182) | public virtual async Task<IdentityResult> CreateAsync(TRole role, Canc...
method UpdateAsync (line 197) | public virtual async Task<IdentityResult> UpdateAsync(TRole role, Canc...
method DeleteAsync (line 221) | public virtual async Task<IdentityResult> DeleteAsync(TRole role, Canc...
method GetRoleIdAsync (line 243) | public virtual Task<string> GetRoleIdAsync(TRole role, CancellationTok...
method GetRoleNameAsync (line 256) | public virtual Task<string> GetRoleNameAsync(TRole role, CancellationT...
method SetRoleNameAsync (line 270) | public virtual Task SetRoleNameAsync(TRole role, string roleName, Canc...
method ConvertIdFromString (line 283) | public virtual TKey ConvertIdFromString(string id)
method ConvertIdToString (line 293) | public virtual string ConvertIdToString(TKey id)
method FindByIdAsync (line 304) | public virtual Task<TRole> FindByIdAsync(string id, CancellationToken ...
method FindByNameAsync (line 318) | public virtual Task<TRole> FindByNameAsync(string normalizedName, Canc...
method GetNormalizedRoleNameAsync (line 331) | public virtual Task<string> GetNormalizedRoleNameAsync(TRole role, Can...
method SetNormalizedRoleNameAsync (line 345) | public virtual Task SetNormalizedRoleNameAsync(TRole role, string norm...
method GetClaimsAsync (line 359) | public virtual async Task<IList<Claim>> GetClaimsAsync(TRole role, Can...
method AddClaimAsync (line 376) | public virtual Task AddClaimAsync(TRole role, Claim claim, Cancellatio...
method CreateRoleClaim (line 391) | protected virtual TClaim CreateRoleClaim(TRole role, Claim claim)
method RemoveClaimAsync (line 405) | public virtual async Task RemoveClaimAsync(TRole role, Claim claim, Ca...
class MongoDbRoleStore (line 78) | public class MongoDbRoleStore<TRole, TContext, TKey>
method MongoDbRoleStore (line 27) | public MongoDbRoleStore(IdentityMongoDbContext context, IdentityErrorD...
method MongoDbRoleStore (line 45) | public MongoDbRoleStore(IdentityMongoDbContext<TKey> context, Identity...
method MongoDbRoleStore (line 66) | public MongoDbRoleStore(TContext context, IdentityErrorDescriber descr...
method MongoDbRoleStore (line 89) | public MongoDbRoleStore(TContext context, IdentityErrorDescriber descr...
method MongoDbRoleStore (line 117) | public MongoDbRoleStore(TContext context, IdentityErrorDescriber descr...
method ThrowIfDisposed (line 149) | protected void ThrowIfDisposed()
method Dispose (line 160) | public void Dispose()
method SaveChanges (line 168) | private async Task SaveChanges(CancellationToken cancellationToken)
method CreateAsync (line 182) | public virtual async Task<IdentityResult> CreateAsync(TRole role, Canc...
method UpdateAsync (line 197) | public virtual async Task<IdentityResult> UpdateAsync(TRole role, Canc...
method DeleteAsync (line 221) | public virtual async Task<IdentityResult> DeleteAsync(TRole role, Canc...
method GetRoleIdAsync (line 243) | public virtual Task<string> GetRoleIdAsync(TRole role, CancellationTok...
method GetRoleNameAsync (line 256) | public virtual Task<string> GetRoleNameAsync(TRole role, CancellationT...
method SetRoleNameAsync (line 270) | public virtual Task SetRoleNameAsync(TRole role, string roleName, Canc...
method ConvertIdFromString (line 283) | public virtual TKey ConvertIdFromString(string id)
method ConvertIdToString (line 293) | public virtual string ConvertIdToString(TKey id)
method FindByIdAsync (line 304) | public virtual Task<TRole> FindByIdAsync(string id, CancellationToken ...
method FindByNameAsync (line 318) | public virtual Task<TRole> FindByNameAsync(string normalizedName, Canc...
method GetNormalizedRoleNameAsync (line 331) | public virtual Task<string> GetNormalizedRoleNameAsync(TRole role, Can...
method SetNormalizedRoleNameAsync (line 345) | public virtual Task SetNormalizedRoleNameAsync(TRole role, string norm...
method GetClaimsAsync (line 359) | public virtual async Task<IList<Claim>> GetClaimsAsync(TRole role, Can...
method AddClaimAsync (line 376) | public virtual Task AddClaimAsync(TRole role, Claim claim, Cancellatio...
method CreateRoleClaim (line 391) | protected virtual TClaim CreateRoleClaim(TRole role, Claim claim)
method RemoveClaimAsync (line 405) | public virtual async Task RemoveClaimAsync(TRole role, Claim claim, Ca...
class MongoDbRoleStore (line 102) | public class MongoDbRoleStore<TRole, TContext, TKey, TClaim> :
method MongoDbRoleStore (line 27) | public MongoDbRoleStore(IdentityMongoDbContext context, IdentityErrorD...
method MongoDbRoleStore (line 45) | public MongoDbRoleStore(IdentityMongoDbContext<TKey> context, Identity...
method MongoDbRoleStore (line 66) | public MongoDbRoleStore(TContext context, IdentityErrorDescriber descr...
method MongoDbRoleStore (line 89) | public MongoDbRoleStore(TContext context, IdentityErrorDescriber descr...
method MongoDbRoleStore (line 117) | public MongoDbRoleStore(TContext context, IdentityErrorDescriber descr...
method ThrowIfDisposed (line 149) | protected void ThrowIfDisposed()
method Dispose (line 160) | public void Dispose()
method SaveChanges (line 168) | private async Task SaveChanges(CancellationToken cancellationToken)
method CreateAsync (line 182) | public virtual async Task<IdentityResult> CreateAsync(TRole role, Canc...
method UpdateAsync (line 197) | public virtual async Task<IdentityResult> UpdateAsync(TRole role, Canc...
method DeleteAsync (line 221) | public virtual async Task<IdentityResult> DeleteAsync(TRole role, Canc...
method GetRoleIdAsync (line 243) | public virtual Task<string> GetRoleIdAsync(TRole role, CancellationTok...
method GetRoleNameAsync (line 256) | public virtual Task<string> GetRoleNameAsync(TRole role, CancellationT...
method SetRoleNameAsync (line 270) | public virtual Task SetRoleNameAsync(TRole role, string roleName, Canc...
method ConvertIdFromString (line 283) | public virtual TKey ConvertIdFromString(string id)
method ConvertIdToString (line 293) | public virtual string ConvertIdToString(TKey id)
method FindByIdAsync (line 304) | public virtual Task<TRole> FindByIdAsync(string id, CancellationToken ...
method FindByNameAsync (line 318) | public virtual Task<TRole> FindByNameAsync(string normalizedName, Canc...
method GetNormalizedRoleNameAsync (line 331) | public virtual Task<string> GetNormalizedRoleNameAsync(TRole role, Can...
method SetNormalizedRoleNameAsync (line 345) | public virtual Task SetNormalizedRoleNameAsync(TRole role, string norm...
method GetClaimsAsync (line 359) | public virtual async Task<IList<Claim>> GetClaimsAsync(TRole role, Can...
method AddClaimAsync (line 376) | public virtual Task AddClaimAsync(TRole role, Claim claim, Cancellatio...
method CreateRoleClaim (line 391) | protected virtual TClaim CreateRoleClaim(TRole role, Claim claim)
method RemoveClaimAsync (line 405) | public virtual async Task RemoveClaimAsync(TRole role, Claim claim, Ca...
FILE: src/Blueshift.Identity.MongoDB/MongoDbUserStore.cs
class MongoDbUserStore (line 18) | public class MongoDbUserStore : MongoDbUserStore<MongoDbIdentityUser, Mo...
method MongoDbUserStore (line 26) | public MongoDbUserStore(IdentityMongoDbContext context, IdentityErrorD...
method MongoDbUserStore (line 45) | public MongoDbUserStore(IdentityMongoDbContext<TKey> context, Identity...
method MongoDbUserStore (line 69) | public MongoDbUserStore(IdentityMongoDbContext<TUser, TRole, ObjectId>...
method MongoDbUserStore (line 113) | public MongoDbUserStore(
method MongoDbUserStore (line 160) | public MongoDbUserStore(TContext context, IdentityErrorDescriber descr...
method MongoDbUserStore (line 212) | public MongoDbUserStore(TContext context, IdentityErrorDescriber descr...
method GetUserIdAsync (line 251) | public virtual Task<string> GetUserIdAsync(TUser user,
method GetUserNameAsync (line 271) | public virtual Task<string> GetUserNameAsync(TUser user,
method SetUserNameAsync (line 289) | public virtual Task SetUserNameAsync(TUser user, string userName,
method GetNormalizedUserNameAsync (line 310) | public virtual Task<string> GetNormalizedUserNameAsync(TUser user,
method SetNormalizedUserNameAsync (line 329) | public virtual Task SetNormalizedUserNameAsync(TUser user, string norm...
method CreateAsync (line 350) | public virtual async Task<IdentityResult> CreateAsync(TUser user,
method UpdateAsync (line 372) | public virtual async Task<IdentityResult> UpdateAsync(TUser user,
method DeleteAsync (line 404) | public virtual async Task<IdentityResult> DeleteAsync(TUser user,
method FindByIdAsync (line 434) | public virtual Task<TUser> FindByIdAsync(string userId,
method FindByNameAsync (line 455) | public virtual Task<TUser> FindByNameAsync(string normalizedUserName,
method Dispose (line 471) | public void Dispose()
method SetTokenAsync (line 488) | public virtual Task SetTokenAsync(TUser user, string loginProvider, st...
method RemoveTokenAsync (line 519) | public Task RemoveTokenAsync(TUser user, string loginProvider, string ...
method GetTokenAsync (line 546) | public Task<string> GetTokenAsync(TUser user, string loginProvider, st...
method SetAuthenticatorKeyAsync (line 571) | public virtual Task SetAuthenticatorKeyAsync(TUser user, string key, C...
method GetAuthenticatorKeyAsync (line 588) | public virtual Task<string> GetAuthenticatorKeyAsync(TUser user, Cance...
method GetClaimsAsync (line 602) | public virtual Task<IList<Claim>> GetClaimsAsync(TUser user,
method AddClaimsAsync (line 623) | public virtual Task AddClaimsAsync(TUser user, IEnumerable<Claim> claims,
method ReplaceClaimAsync (line 646) | public virtual Task ReplaceClaimAsync(TUser user, Claim claim, Claim n...
method RemoveClaimsAsync (line 671) | public virtual Task RemoveClaimsAsync(TUser user, IEnumerable<Claim> c...
method GetUsersForClaimAsync (line 699) | public virtual async Task<IList<TUser>> GetUsersForClaimAsync(Claim cl...
method GetEmailConfirmedAsync (line 727) | public virtual Task<bool> GetEmailConfirmedAsync(TUser user,
method SetEmailConfirmedAsync (line 748) | public virtual Task SetEmailConfirmedAsync(TUser user, bool confirmed,
method SetEmailAsync (line 767) | public virtual Task SetEmailAsync(TUser user, string email,
method GetEmailAsync (line 788) | public virtual Task<string> GetEmailAsync(TUser user,
method GetNormalizedEmailAsync (line 808) | public virtual Task<string> GetNormalizedEmailAsync(TUser user,
method SetNormalizedEmailAsync (line 826) | public virtual Task SetNormalizedEmailAsync(TUser user, string normali...
method FindByEmailAsync (line 847) | public virtual Task<TUser> FindByEmailAsync(string normalizedEmail,
method GetLockoutEndDateAsync (line 869) | public virtual Task<DateTimeOffset?> GetLockoutEndDateAsync(TUser user,
method SetLockoutEndDateAsync (line 891) | public virtual Task SetLockoutEndDateAsync(TUser user, DateTimeOffset?...
method IncrementAccessFailedCountAsync (line 912) | public virtual Task<int> IncrementAccessFailedCountAsync(TUser user,
method ResetAccessFailedCountAsync (line 930) | public virtual Task ResetAccessFailedCountAsync(TUser user,
method GetAccessFailedCountAsync (line 948) | public virtual Task<int> GetAccessFailedCountAsync(TUser user,
method GetLockoutEnabledAsync (line 968) | public virtual Task<bool> GetLockoutEnabledAsync(TUser user,
method SetLockoutEnabledAsync (line 986) | public virtual Task SetLockoutEnabledAsync(TUser user, bool enabled,
method AddLoginAsync (line 1005) | public virtual Task AddLoginAsync(TUser user, UserLoginInfo login,
method RemoveLoginAsync (line 1027) | public virtual Task RemoveLoginAsync(TUser user, string loginProvider,...
method GetLoginsAsync (line 1057) | public virtual Task<IList<UserLoginInfo>> GetLoginsAsync(TUser user,
method FindByLoginAsync (line 1083) | public virtual async Task<TUser> FindByLoginAsync(string loginProvider...
method SetPasswordHashAsync (line 1106) | public virtual Task SetPasswordHashAsync(TUser user, string passwordHash,
method GetPasswordHashAsync (line 1124) | public virtual Task<string> GetPasswordHashAsync(TUser user,
method HasPasswordAsync (line 1144) | public virtual Task<bool> HasPasswordAsync(TUser user,
method SetPhoneNumberAsync (line 1161) | public virtual Task SetPhoneNumberAsync(TUser user, string phoneNumber,
method GetPhoneNumberAsync (line 1182) | public virtual Task<string> GetPhoneNumberAsync(TUser user,
method GetPhoneNumberConfirmedAsync (line 1203) | public virtual Task<bool> GetPhoneNumberConfirmedAsync(TUser user,
method SetPhoneNumberConfirmedAsync (line 1221) | public virtual Task SetPhoneNumberConfirmedAsync(TUser user, bool conf...
method AddToRoleAsync (line 1240) | public virtual async Task AddToRoleAsync(TUser user, string normalized...
method RemoveFromRoleAsync (line 1264) | public virtual Task RemoveFromRoleAsync(TUser user, string normalizedR...
method GetRolesAsync (line 1287) | public virtual Task<IList<string>> GetRolesAsync(TUser user,
method IsInRoleAsync (line 1313) | public virtual Task<bool> IsInRoleAsync(TUser user, string normalizedR...
method GetUsersInRoleAsync (line 1335) | public virtual async Task<IList<TUser>> GetUsersInRoleAsync(string nor...
method SetSecurityStampAsync (line 1357) | public virtual Task SetSecurityStampAsync(TUser user, string stamp,
method GetSecurityStampAsync (line 1378) | public virtual Task<string> GetSecurityStampAsync(TUser user,
method CountCodesAsync (line 1395) | public virtual Task<int> CountCodesAsync(TUser user, CancellationToken...
method ReplaceCodesAsync (line 1416) | public virtual Task ReplaceCodesAsync(TUser user, IEnumerable<string> ...
method RedeemCodeAsync (line 1434) | public virtual async Task<bool> RedeemCodeAsync(TUser user, string cod...
method SetTwoFactorEnabledAsync (line 1467) | public virtual Task SetTwoFactorEnabledAsync(TUser user, bool enabled,
method GetTwoFactorEnabledAsync (line 1491) | public virtual Task<bool> GetTwoFactorEnabledAsync(TUser user,
method CreateUserRole (line 1506) | protected virtual TUserRole CreateUserRole(TUser user, TRole role)
method CreateUserClaim (line 1522) | protected virtual TClaim CreateUserClaim(TUser user, Claim claim)
method CreateUserLogin (line 1538) | protected virtual TUserLogin CreateUserLogin(TUser user, UserLoginInfo...
method CreateUserToken (line 1555) | protected TUserToken CreateUserToken(TUser user, string loginProvider,...
method SaveChanges (line 1572) | protected Task SaveChanges(CancellationToken cancellationToken)
method ConvertIdFromString (line 1584) | public virtual TKey ConvertIdFromString(string id)
method ConvertIdToString (line 1596) | public virtual string ConvertIdToString(TKey id)
method ThrowIfDisposed (line 1607) | protected void ThrowIfDisposed()
class MongoDbUserStore (line 36) | public class MongoDbUserStore<TKey> :
method MongoDbUserStore (line 26) | public MongoDbUserStore(IdentityMongoDbContext context, IdentityErrorD...
method MongoDbUserStore (line 45) | public MongoDbUserStore(IdentityMongoDbContext<TKey> context, Identity...
method MongoDbUserStore (line 69) | public MongoDbUserStore(IdentityMongoDbContext<TUser, TRole, ObjectId>...
method MongoDbUserStore (line 113) | public MongoDbUserStore(
method MongoDbUserStore (line 160) | public MongoDbUserStore(TContext context, IdentityErrorDescriber descr...
method MongoDbUserStore (line 212) | public MongoDbUserStore(TContext context, IdentityErrorDescriber descr...
method GetUserIdAsync (line 251) | public virtual Task<string> GetUserIdAsync(TUser user,
method GetUserNameAsync (line 271) | public virtual Task<string> GetUserNameAsync(TUser user,
method SetUserNameAsync (line 289) | public virtual Task SetUserNameAsync(TUser user, string userName,
method GetNormalizedUserNameAsync (line 310) | public virtual Task<string> GetNormalizedUserNameAsync(TUser user,
method SetNormalizedUserNameAsync (line 329) | public virtual Task SetNormalizedUserNameAsync(TUser user, string norm...
method CreateAsync (line 350) | public virtual async Task<IdentityResult> CreateAsync(TUser user,
method UpdateAsync (line 372) | public virtual async Task<IdentityResult> UpdateAsync(TUser user,
method DeleteAsync (line 404) | public virtual async Task<IdentityResult> DeleteAsync(TUser user,
method FindByIdAsync (line 434) | public virtual Task<TUser> FindByIdAsync(string userId,
method FindByNameAsync (line 455) | public virtual Task<TUser> FindByNameAsync(string normalizedUserName,
method Dispose (line 471) | public void Dispose()
method SetTokenAsync (line 488) | public virtual Task SetTokenAsync(TUser user, string loginProvider, st...
method RemoveTokenAsync (line 519) | public Task RemoveTokenAsync(TUser user, string loginProvider, string ...
method GetTokenAsync (line 546) | public Task<string> GetTokenAsync(TUser user, string loginProvider, st...
method SetAuthenticatorKeyAsync (line 571) | public virtual Task SetAuthenticatorKeyAsync(TUser user, string key, C...
method GetAuthenticatorKeyAsync (line 588) | public virtual Task<string> GetAuthenticatorKeyAsync(TUser user, Cance...
method GetClaimsAsync (line 602) | public virtual Task<IList<Claim>> GetClaimsAsync(TUser user,
method AddClaimsAsync (line 623) | public virtual Task AddClaimsAsync(TUser user, IEnumerable<Claim> claims,
method ReplaceClaimAsync (line 646) | public virtual Task ReplaceClaimAsync(TUser user, Claim claim, Claim n...
method RemoveClaimsAsync (line 671) | public virtual Task RemoveClaimsAsync(TUser user, IEnumerable<Claim> c...
method GetUsersForClaimAsync (line 699) | public virtual async Task<IList<TUser>> GetUsersForClaimAsync(Claim cl...
method GetEmailConfirmedAsync (line 727) | public virtual Task<bool> GetEmailConfirmedAsync(TUser user,
method SetEmailConfirmedAsync (line 748) | public virtual Task SetEmailConfirmedAsync(TUser user, bool confirmed,
method SetEmailAsync (line 767) | public virtual Task SetEmailAsync(TUser user, string email,
method GetEmailAsync (line 788) | public virtual Task<string> GetEmailAsync(TUser user,
method GetNormalizedEmailAsync (line 808) | public virtual Task<string> GetNormalizedEmailAsync(TUser user,
method SetNormalizedEmailAsync (line 826) | public virtual Task SetNormalizedEmailAsync(TUser user, string normali...
method FindByEmailAsync (line 847) | public virtual Task<TUser> FindByEmailAsync(string normalizedEmail,
method GetLockoutEndDateAsync (line 869) | public virtual Task<DateTimeOffset?> GetLockoutEndDateAsync(TUser user,
method SetLockoutEndDateAsync (line 891) | public virtual Task SetLockoutEndDateAsync(TUser user, DateTimeOffset?...
method IncrementAccessFailedCountAsync (line 912) | public virtual Task<int> IncrementAccessFailedCountAsync(TUser user,
method ResetAccessFailedCountAsync (line 930) | public virtual Task ResetAccessFailedCountAsync(TUser user,
method GetAccessFailedCountAsync (line 948) | public virtual Task<int> GetAccessFailedCountAsync(TUser user,
method GetLockoutEnabledAsync (line 968) | public virtual Task<bool> GetLockoutEnabledAsync(TUser user,
method SetLockoutEnabledAsync (line 986) | public virtual Task SetLockoutEnabledAsync(TUser user, bool enabled,
method AddLoginAsync (line 1005) | public virtual Task AddLoginAsync(TUser user, UserLoginInfo login,
method RemoveLoginAsync (line 1027) | public virtual Task RemoveLoginAsync(TUser user, string loginProvider,...
method GetLoginsAsync (line 1057) | public virtual Task<IList<UserLoginInfo>> GetLoginsAsync(TUser user,
method FindByLoginAsync (line 1083) | public virtual async Task<TUser> FindByLoginAsync(string loginProvider...
method SetPasswordHashAsync (line 1106) | public virtual Task SetPasswordHashAsync(TUser user, string passwordHash,
method GetPasswordHashAsync (line 1124) | public virtual Task<string> GetPasswordHashAsync(TUser user,
method HasPasswordAsync (line 1144) | public virtual Task<bool> HasPasswordAsync(TUser user,
method SetPhoneNumberAsync (line 1161) | public virtual Task SetPhoneNumberAsync(TUser user, string phoneNumber,
method GetPhoneNumberAsync (line 1182) | public virtual Task<string> GetPhoneNumberAsync(TUser user,
method GetPhoneNumberConfirmedAsync (line 1203) | public virtual Task<bool> GetPhoneNumberConfirmedAsync(TUser user,
method SetPhoneNumberConfirmedAsync (line 1221) | public virtual Task SetPhoneNumberConfirmedAsync(TUser user, bool conf...
method AddToRoleAsync (line 1240) | public virtual async Task AddToRoleAsync(TUser user, string normalized...
method RemoveFromRoleAsync (line 1264) | public virtual Task RemoveFromRoleAsync(TUser user, string normalizedR...
method GetRolesAsync (line 1287) | public virtual Task<IList<string>> GetRolesAsync(TUser user,
method IsInRoleAsync (line 1313) | public virtual Task<bool> IsInRoleAsync(TUser user, string normalizedR...
method GetUsersInRoleAsync (line 1335) | public virtual async Task<IList<TUser>> GetUsersInRoleAsync(string nor...
method SetSecurityStampAsync (line 1357) | public virtual Task SetSecurityStampAsync(TUser user, string stamp,
method GetSecurityStampAsync (line 1378) | public virtual Task<string> GetSecurityStampAsync(TUser user,
method CountCodesAsync (line 1395) | public virtual Task<int> CountCodesAsync(TUser user, CancellationToken...
method ReplaceCodesAsync (line 1416) | public virtual Task ReplaceCodesAsync(TUser user, IEnumerable<string> ...
method RedeemCodeAsync (line 1434) | public virtual async Task<bool> RedeemCodeAsync(TUser user, string cod...
method SetTwoFactorEnabledAsync (line 1467) | public virtual Task SetTwoFactorEnabledAsync(TUser user, bool enabled,
method GetTwoFactorEnabledAsync (line 1491) | public virtual Task<bool> GetTwoFactorEnabledAsync(TUser user,
method CreateUserRole (line 1506) | protected virtual TUserRole CreateUserRole(TUser user, TRole role)
method CreateUserClaim (line 1522) | protected virtual TClaim CreateUserClaim(TUser user, Claim claim)
method CreateUserLogin (line 1538) | protected virtual TUserLogin CreateUserLogin(TUser user, UserLoginInfo...
method CreateUserToken (line 1555) | protected TUserToken CreateUserToken(TUser user, string loginProvider,...
method SaveChanges (line 1572) | protected Task SaveChanges(CancellationToken cancellationToken)
method ConvertIdFromString (line 1584) | public virtual TKey ConvertIdFromString(string id)
method ConvertIdToString (line 1596) | public virtual string ConvertIdToString(TKey id)
method ThrowIfDisposed (line 1607) | protected void ThrowIfDisposed()
class MongoDbUserStore (line 56) | public class MongoDbUserStore<TUser, TRole> :
method MongoDbUserStore (line 26) | public MongoDbUserStore(IdentityMongoDbContext context, IdentityErrorD...
method MongoDbUserStore (line 45) | public MongoDbUserStore(IdentityMongoDbContext<TKey> context, Identity...
method MongoDbUserStore (line 69) | public MongoDbUserStore(IdentityMongoDbContext<TUser, TRole, ObjectId>...
method MongoDbUserStore (line 113) | public MongoDbUserStore(
method MongoDbUserStore (line 160) | public MongoDbUserStore(TContext context, IdentityErrorDescriber descr...
method MongoDbUserStore (line 212) | public MongoDbUserStore(TContext context, IdentityErrorDescriber descr...
method GetUserIdAsync (line 251) | public virtual Task<string> GetUserIdAsync(TUser user,
method GetUserNameAsync (line 271) | public virtual Task<string> GetUserNameAsync(TUser user,
method SetUserNameAsync (line 289) | public virtual Task SetUserNameAsync(TUser user, string userName,
method GetNormalizedUserNameAsync (line 310) | public virtual Task<string> GetNormalizedUserNameAsync(TUser user,
method SetNormalizedUserNameAsync (line 329) | public virtual Task SetNormalizedUserNameAsync(TUser user, string norm...
method CreateAsync (line 350) | public virtual async Task<IdentityResult> CreateAsync(TUser user,
method UpdateAsync (line 372) | public virtual async Task<IdentityResult> UpdateAsync(TUser user,
method DeleteAsync (line 404) | public virtual async Task<IdentityResult> DeleteAsync(TUser user,
method FindByIdAsync (line 434) | public virtual Task<TUser> FindByIdAsync(string userId,
method FindByNameAsync (line 455) | public virtual Task<TUser> FindByNameAsync(string normalizedUserName,
method Dispose (line 471) | public void Dispose()
method SetTokenAsync (line 488) | public virtual Task SetTokenAsync(TUser user, string loginProvider, st...
method RemoveTokenAsync (line 519) | public Task RemoveTokenAsync(TUser user, string loginProvider, string ...
method GetTokenAsync (line 546) | public Task<string> GetTokenAsync(TUser user, string loginProvider, st...
method SetAuthenticatorKeyAsync (line 571) | public virtual Task SetAuthenticatorKeyAsync(TUser user, string key, C...
method GetAuthenticatorKeyAsync (line 588) | public virtual Task<string> GetAuthenticatorKeyAsync(TUser user, Cance...
method GetClaimsAsync (line 602) | public virtual Task<IList<Claim>> GetClaimsAsync(TUser user,
method AddClaimsAsync (line 623) | public virtual Task AddClaimsAsync(TUser user, IEnumerable<Claim> claims,
method ReplaceClaimAsync (line 646) | public virtual Task ReplaceClaimAsync(TUser user, Claim claim, Claim n...
method RemoveClaimsAsync (line 671) | public virtual Task RemoveClaimsAsync(TUser user, IEnumerable<Claim> c...
method GetUsersForClaimAsync (line 699) | public virtual async Task<IList<TUser>> GetUsersForClaimAsync(Claim cl...
method GetEmailConfirmedAsync (line 727) | public virtual Task<bool> GetEmailConfirmedAsync(TUser user,
method SetEmailConfirmedAsync (line 748) | public virtual Task SetEmailConfirmedAsync(TUser user, bool confirmed,
method SetEmailAsync (line 767) | public virtual Task SetEmailAsync(TUser user, string email,
method GetEmailAsync (line 788) | public virtual Task<string> GetEmailAsync(TUser user,
method GetNormalizedEmailAsync (line 808) | public virtual Task<string> GetNormalizedEmailAsync(TUser user,
method SetNormalizedEmailAsync (line 826) | public virtual Task SetNormalizedEmailAsync(TUser user, string normali...
method FindByEmailAsync (line 847) | public virtual Task<TUser> FindByEmailAsync(string normalizedEmail,
method GetLockoutEndDateAsync (line 869) | public virtual Task<DateTimeOffset?> GetLockoutEndDateAsync(TUser user,
method SetLockoutEndDateAsync (line 891) | public virtual Task SetLockoutEndDateAsync(TUser user, DateTimeOffset?...
method IncrementAccessFailedCountAsync (line 912) | public virtual Task<int> IncrementAccessFailedCountAsync(TUser user,
method ResetAccessFailedCountAsync (line 930) | public virtual Task ResetAccessFailedCountAsync(TUser user,
method GetAccessFailedCountAsync (line 948) | public virtual Task<int> GetAccessFailedCountAsync(TUser user,
method GetLockoutEnabledAsync (line 968) | public virtual Task<bool> GetLockoutEnabledAsync(TUser user,
method SetLockoutEnabledAsync (line 986) | public virtual Task SetLockoutEnabledAsync(TUser user, bool enabled,
method AddLoginAsync (line 1005) | public virtual Task AddLoginAsync(TUser user, UserLoginInfo login,
method RemoveLoginAsync (line 1027) | public virtual Task RemoveLoginAsync(TUser user, string loginProvider,...
method GetLoginsAsync (line 1057) | public virtual Task<IList<UserLoginInfo>> GetLoginsAsync(TUser user,
method FindByLoginAsync (line 1083) | public virtual async Task<TUser> FindByLoginAsync(string loginProvider...
method SetPasswordHashAsync (line 1106) | public virtual Task SetPasswordHashAsync(TUser user, string passwordHash,
method GetPasswordHashAsync (line 1124) | public virtual Task<string> GetPasswordHashAsync(TUser user,
method HasPasswordAsync (line 1144) | public virtual Task<bool> HasPasswordAsync(TUser user,
method SetPhoneNumberAsync (line 1161) | public virtual Task SetPhoneNumberAsync(TUser user, string phoneNumber,
method GetPhoneNumberAsync (line 1182) | public virtual Task<string> GetPhoneNumberAsync(TUser user,
method GetPhoneNumberConfirmedAsync (line 1203) | public virtual Task<bool> GetPhoneNumberConfirmedAsync(TUser user,
method SetPhoneNumberConfirmedAsync (line 1221) | public virtual Task SetPhoneNumberConfirmedAsync(TUser user, bool conf...
method AddToRoleAsync (line 1240) | public virtual async Task AddToRoleAsync(TUser user, string normalized...
method RemoveFromRoleAsync (line 1264) | public virtual Task RemoveFromRoleAsync(TUser user, string normalizedR...
method GetRolesAsync (line 1287) | public virtual Task<IList<string>> GetRolesAsync(TUser user,
method IsInRoleAsync (line 1313) | public virtual Task<bool> IsInRoleAsync(TUser user, string normalizedR...
method GetUsersInRoleAsync (line 1335) | public virtual async Task<IList<TUser>> GetUsersInRoleAsync(string nor...
method SetSecurityStampAsync (line 1357) | public virtual Task SetSecurityStampAsync(TUser user, string stamp,
method GetSecurityStampAsync (line 1378) | public virtual Task<string> GetSecurityStampAsync(TUser user,
method CountCodesAsync (line 1395) | public virtual Task<int> CountCodesAsync(TUser user, CancellationToken...
method ReplaceCodesAsync (line 1416) | public virtual Task ReplaceCodesAsync(TUser user, IEnumerable<string> ...
method RedeemCodeAsync (line 1434) | public virtual async Task<bool> RedeemCodeAsync(TUser user, string cod...
method SetTwoFactorEnabledAsync (line 1467) | public virtual Task SetTwoFactorEnabledAsync(TUser user, bool enabled,
method GetTwoFactorEnabledAsync (line 1491) | public virtual Task<bool> GetTwoFactorEnabledAsync(TUser user,
method CreateUserRole (line 1506) | protected virtual TUserRole CreateUserRole(TUser user, TRole role)
method CreateUserClaim (line 1522) | protected virtual TClaim CreateUserClaim(TUser user, Claim claim)
method CreateUserLogin (line 1538) | protected virtual TUserLogin CreateUserLogin(TUser user, UserLoginInfo...
method CreateUserToken (line 1555) | protected TUserToken CreateUserToken(TUser user, string loginProvider,...
method SaveChanges (line 1572) | protected Task SaveChanges(CancellationToken cancellationToken)
method ConvertIdFromString (line 1584) | public virtual TKey ConvertIdFromString(string id)
method ConvertIdToString (line 1596) | public virtual string ConvertIdToString(TKey id)
method ThrowIfDisposed (line 1607) | protected void ThrowIfDisposed()
class MongoDbUserStore (line 82) | public class MongoDbUserStore<TUser, TRole, TKey> :
method MongoDbUserStore (line 26) | public MongoDbUserStore(IdentityMongoDbContext context, IdentityErrorD...
method MongoDbUserStore (line 45) | public MongoDbUserStore(IdentityMongoDbContext<TKey> context, Identity...
method MongoDbUserStore (line 69) | public MongoDbUserStore(IdentityMongoDbContext<TUser, TRole, ObjectId>...
method MongoDbUserStore (line 113) | public MongoDbUserStore(
method MongoDbUserStore (line 160) | public MongoDbUserStore(TContext context, IdentityErrorDescriber descr...
method MongoDbUserStore (line 212) | public MongoDbUserStore(TContext context, IdentityErrorDescriber descr...
method GetUserIdAsync (line 251) | public virtual Task<string> GetUserIdAsync(TUser user,
method GetUserNameAsync (line 271) | public virtual Task<string> GetUserNameAsync(TUser user,
method SetUserNameAsync (line 289) | public virtual Task SetUserNameAsync(TUser user, string userName,
method GetNormalizedUserNameAsync (line 310) | public virtual Task<string> GetNormalizedUserNameAsync(TUser user,
method SetNormalizedUserNameAsync (line 329) | public virtual Task SetNormalizedUserNameAsync(TUser user, string norm...
method CreateAsync (line 350) | public virtual async Task<IdentityResult> CreateAsync(TUser user,
method UpdateAsync (line 372) | public virtual async Task<IdentityResult> UpdateAsync(TUser user,
method DeleteAsync (line 404) | public virtual async Task<IdentityResult> DeleteAsync(TUser user,
method FindByIdAsync (line 434) | public virtual Task<TUser> FindByIdAsync(string userId,
method FindByNameAsync (line 455) | public virtual Task<TUser> FindByNameAsync(string normalizedUserName,
method Dispose (line 471) | public void Dispose()
method SetTokenAsync (line 488) | public virtual Task SetTokenAsync(TUser user, string loginProvider, st...
method RemoveTokenAsync (line 519) | public Task RemoveTokenAsync(TUser user, string loginProvider, string ...
method GetTokenAsync (line 546) | public Task<string> GetTokenAsync(TUser user, string loginProvider, st...
method SetAuthenticatorKeyAsync (line 571) | public virtual Task SetAuthenticatorKeyAsync(TUser user, string key, C...
method GetAuthenticatorKeyAsync (line 588) | public virtual Task<string> GetAuthenticatorKeyAsync(TUser user, Cance...
method GetClaimsAsync (line 602) | public virtual Task<IList<Claim>> GetClaimsAsync(TUser user,
method AddClaimsAsync (line 623) | public virtual Task AddClaimsAsync(TUser user, IEnumerable<Claim> claims,
method ReplaceClaimAsync (line 646) | public virtual Task ReplaceClaimAsync(TUser user, Claim claim, Claim n...
method RemoveClaimsAsync (line 671) | public virtual Task RemoveClaimsAsync(TUser user, IEnumerable<Claim> c...
method GetUsersForClaimAsync (line 699) | public virtual async Task<IList<TUser>> GetUsersForClaimAsync(Claim cl...
method GetEmailConfirmedAsync (line 727) | public virtual Task<bool> GetEmailConfirmedAsync(TUser user,
method SetEmailConfirmedAsync (line 748) | public virtual Task SetEmailConfirmedAsync(TUser user, bool confirmed,
method SetEmailAsync (line 767) | public virtual Task SetEmailAsync(TUser user, string email,
method GetEmailAsync (line 788) | public virtual Task<string> GetEmailAsync(TUser user,
method GetNormalizedEmailAsync (line 808) | public virtual Task<string> GetNormalizedEmailAsync(TUser user,
method SetNormalizedEmailAsync (line 826) | public virtual Task SetNormalizedEmailAsync(TUser user, string normali...
method FindByEmailAsync (line 847) | public virtual Task<TUser> FindByEmailAsync(string normalizedEmail,
method GetLockoutEndDateAsync (line 869) | public virtual Task<DateTimeOffset?> GetLockoutEndDateAsync(TUser user,
method SetLockoutEndDateAsync (line 891) | public virtual Task SetLockoutEndDateAsync(TUser user, DateTimeOffset?...
method IncrementAccessFailedCountAsync (line 912) | public virtual Task<int> IncrementAccessFailedCountAsync(TUser user,
method ResetAccessFailedCountAsync (line 930) | public virtual Task ResetAccessFailedCountAsync(TUser user,
method GetAccessFailedCountAsync (line 948) | public virtual Task<int> GetAccessFailedCountAsync(TUser user,
method GetLockoutEnabledAsync (line 968) | public virtual Task<bool> GetLockoutEnabledAsync(TUser user,
method SetLockoutEnabledAsync (line 986) | public virtual Task SetLockoutEnabledAsync(TUser user, bool enabled,
method AddLoginAsync (line 1005) | public virtual Task AddLoginAsync(TUser user, UserLoginInfo login,
method RemoveLoginAsync (line 1027) | public virtual Task RemoveLoginAsync(TUser user, string loginProvider,...
method GetLoginsAsync (line 1057) | public virtual Task<IList<UserLoginInfo>> GetLoginsAsync(TUser user,
method FindByLoginAsync (line 1083) | public virtual async Task<TUser> FindByLoginAsync(string loginProvider...
method SetPasswordHashAsync (line 1106) | public virtual Task SetPasswordHashAsync(TUser user, string passwordHash,
method GetPasswordHashAsync (line 1124) | public virtual Task<string> GetPasswordHashAsync(TUser user,
method HasPasswordAsync (line 1144) | public virtual Task<bool> HasPasswordAsync(TUser user,
method SetPhoneNumberAsync (line 1161) | public virtual Task SetPhoneNumberAsync(TUser user, string phoneNumber,
method GetPhoneNumberAsync (line 1182) | public virtual Task<string> GetPhoneNumberAsync(TUser user,
method GetPhoneNumberConfirmedAsync (line 1203) | public virtual Task<bool> GetPhoneNumberConfirmedAsync(TUser user,
method SetPhoneNumberConfirmedAsync (line 1221) | public virtual Task SetPhoneNumberConfirmedAsync(TUser user, bool conf...
method AddToRoleAsync (line 1240) | public virtual async Task AddToRoleAsync(TUser user, string normalized...
method RemoveFromRoleAsync (line 1264) | public virtual Task RemoveFromRoleAsync(TUser user, string normalizedR...
method GetRolesAsync (line 1287) | public virtual Task<IList<string>> GetRolesAsync(TUser user,
method IsInRoleAsync (line 1313) | public virtual Task<bool> IsInRoleAsync(TUser user, string normalizedR...
method GetUsersInRoleAsync (line 1335) | public virtual async Task<IList<TUser>> GetUsersInRoleAsync(string nor...
method SetSecurityStampAsync (line 1357) | public virtual Task SetSecurityStampAsync(TUser user, string stamp,
method GetSecurityStampAsync (line 1378) | public virtual Task<string> GetSecurityStampAsync(TUser user,
method CountCodesAsync (line 1395) | public virtual Task<int> CountCodesAsync(TUser user, CancellationToken...
method ReplaceCodesAsync (line 1416) | public virtual Task ReplaceCodesAsync(TUser user, IEnumerable<string> ...
method RedeemCodeAsync (line 1434) | public virtual async Task<bool> RedeemCodeAsync(TUser user, string cod...
method SetTwoFactorEnabledAsync (line 1467) | public virtual Task SetTwoFactorEnabledAsync(TUser user, bool enabled,
method GetTwoFactorEnabledAsync (line 1491) | public virtual Task<bool> GetTwoFactorEnabledAsync(TUser user,
method CreateUserRole (line 1506) | protected virtual TUserRole CreateUserRole(TUser user, TRole role)
method CreateUserClaim (line 1522) | protected virtual TClaim CreateUserClaim(TUser user, Claim claim)
method CreateUserLogin (line 1538) | protected virtual TUserLogin CreateUserLogin(TUser user, UserLoginInfo...
method CreateUserToken (line 1555) | protected TUserToken CreateUserToken(TUser user, string loginProvider,...
method SaveChanges (line 1572) | protected Task SaveChanges(CancellationToken cancellationToken)
method ConvertIdFromString (line 1584) | public virtual TKey ConvertIdFromString(string id)
method ConvertIdToString (line 1596) | public virtual string ConvertIdToString(TKey id)
method ThrowIfDisposed (line 1607) | protected void ThrowIfDisposed()
class MongoDbUserStore (line 135) | public class MongoDbUserStore<TUser, TRole, TContext, TKey> :
method MongoDbUserStore (line 26) | public MongoDbUserStore(IdentityMongoDbContext context, IdentityErrorD...
method MongoDbUserStore (line 45) | public MongoDbUserStore(IdentityMongoDbContext<TKey> context, Identity...
method MongoDbUserStore (line 69) | public MongoDbUserStore(IdentityMongoDbContext<TUser, TRole, ObjectId>...
method MongoDbUserStore (line 113) | public MongoDbUserStore(
method MongoDbUserStore (line 160) | public MongoDbUserStore(TContext context, IdentityErrorDescriber descr...
method MongoDbUserStore (line 212) | public MongoDbUserStore(TContext context, IdentityErrorDescriber descr...
method GetUserIdAsync (line 251) | public virtual Task<string> GetUserIdAsync(TUser user,
method GetUserNameAsync (line 271) | public virtual Task<string> GetUserNameAsync(TUser user,
method SetUserNameAsync (line 289) | public virtual Task SetUserNameAsync(TUser user, string userName,
method GetNormalizedUserNameAsync (line 310) | public virtual Task<string> GetNormalizedUserNameAsync(TUser user,
method SetNormalizedUserNameAsync (line 329) | public virtual Task SetNormalizedUserNameAsync(TUser user, string norm...
method CreateAsync (line 350) | public virtual async Task<IdentityResult> CreateAsync(TUser user,
method UpdateAsync (line 372) | public virtual async Task<IdentityResult> UpdateAsync(TUser user,
method DeleteAsync (line 404) | public virtual async Task<IdentityResult> DeleteAsync(TUser user,
method FindByIdAsync (line 434) | public virtual Task<TUser> FindByIdAsync(string userId,
method FindByNameAsync (line 455) | public virtual Task<TUser> FindByNameAsync(string normalizedUserName,
method Dispose (line 471) | public void Dispose()
method SetTokenAsync (line 488) | public virtual Task SetTokenAsync(TUser user, string loginProvider, st...
method RemoveTokenAsync (line 519) | public Task RemoveTokenAsync(TUser user, string loginProvider, string ...
method GetTokenAsync (line 546) | public Task<string> GetTokenAsync(TUser user, string loginProvider, st...
method SetAuthenticatorKeyAsync (line 571) | public virtual Task SetAuthenticatorKeyAsync(TUser user, string key, C...
method GetAuthenticatorKeyAsync (line 588) | public virtual Task<string> GetAuthenticatorKeyAsync(TUser user, Cance...
method GetClaimsAsync (line 602) | public virtual Task<IList<Claim>> GetClaimsAsync(TUser user,
method AddClaimsAsync (line 623) | public virtual Task AddClaimsAsync(TUser user, IEnumerable<Claim> claims,
method ReplaceClaimAsync (line 646) | public virtual Task ReplaceClaimAsync(TUser user, Claim claim, Claim n...
method RemoveClaimsAsync (line 671) | public virtual Task RemoveClaimsAsync(TUser user, IEnumerable<Claim> c...
method GetUsersForClaimAsync (line 699) | public virtual async Task<IList<TUser>> GetUsersForClaimAsync(Claim cl...
method GetEmailConfirmedAsync (line 727) | public virtual Task<bool> GetEmailConfirmedAsync(TUser user,
method SetEmailConfirmedAsync (line 748) | public virtual Task SetEmailConfirmedAsync(TUser user, bool confirmed,
method SetEmailAsync (line 767) | public virtual Task SetEmailAsync(TUser user, string email,
method GetEmailAsync (line 788) | public virtual Task<string> GetEmailAsync(TUser user,
method GetNormalizedEmailAsync (line 808) | public virtual Task<string> GetNormalizedEmailAsync(TUser user,
method SetNormalizedEmailAsync (line 826) | public virtual Task SetNormalizedEmailAsync(TUser user, string normali...
method FindByEmailAsync (line 847) | public virtual Task<TUser> FindByEmailAsync(string normalizedEmail,
method GetLockoutEndDateAsync (line 869) | public virtual Task<DateTimeOffset?> GetLockoutEndDateAsync(TUser user,
method SetLockoutEndDateAsync (line 891) | public virtual Task SetLockoutEndDateAsync(TUser user, DateTimeOffset?...
method IncrementAccessFailedCountAsync (line 912) | public virtual Task<int> IncrementAccessFailedCountAsync(TUser user,
method ResetAccessFailedCountAsync (line 930) | public virtual Task ResetAccessFailedCountAsync(TUser user,
method GetAccessFailedCountAsync (line 948) | public virtual Task<int> GetAccessFailedCountAsync(TUser user,
method GetLockoutEnabledAsync (line 968) | public virtual Task<bool> GetLockoutEnabledAsync(TUser user,
method SetLockoutEnabledAsync (line 986) | public virtual Task SetLockoutEnabledAsync(TUser user, bool enabled,
method AddLoginAsync (line 1005) | public virtual Task AddLoginAsync(TUser user, UserLoginInfo login,
method RemoveLoginAsync (line 1027) | public virtual Task RemoveLoginAsync(TUser user, string loginProvider,...
method GetLoginsAsync (line 1057) | public virtual Task<IList<UserLoginInfo>> GetLoginsAsync(TUser user,
method FindByLoginAsync (line 1083) | public virtual async Task<TUser> FindByLoginAsync(string loginProvider...
method SetPasswordHashAsync (line 1106) | public virtual Task SetPasswordHashAsync(TUser user, string passwordHash,
method GetPasswordHashAsync (line 1124) | public virtual Task<string> GetPasswordHashAsync(TUser user,
method HasPasswordAsync (line 1144) | public virtual Task<bool> HasPasswordAsync(TUser user,
method SetPhoneNumberAsync (line 1161) | public virtual Task SetPhoneNumberAsync(TUser user, string phoneNumber,
method GetPhoneNumberAsync (line 1182) | public virtual Task<string> GetPhoneNumberAsync(TUser user,
method GetPhoneNumberConfirmedAsync (line 1203) | public virtual Task<bool> GetPhoneNumberConfirmedAsync(TUser user,
method SetPhoneNumberConfirmedAsync (line 1221) | public virtual Task SetPhoneNumberConfirmedAsync(TUser user, bool conf...
method AddToRoleAsync (line 1240) | public virtual async Task AddToRoleAsync(TUser user, string normalized...
method RemoveFromRoleAsync (line 1264) | public virtual Task RemoveFromRoleAsync(TUser user, string normalizedR...
method GetRolesAsync (line 1287) | public virtual Task<IList<string>> GetRolesAsync(TUser user,
method IsInRoleAsync (line 1313) | public virtual Task<bool> IsInRoleAsync(TUser user, string normalizedR...
method GetUsersInRoleAsync (line 1335) | public virtual async Task<IList<TUser>> GetUsersInRoleAsync(string nor...
method SetSecurityStampAsync (line 1357) | public virtual Task SetSecurityStampAsync(TUser user, string stamp,
method GetSecurityStampAsync (line 1378) | public virtual Task<string> GetSecurityStampAsync(TUser user,
method CountCodesAsync (line 1395) | public virtual Task<int> CountCodesAsync(TUser user, CancellationToken...
method ReplaceCodesAsync (line 1416) | public virtual Task ReplaceCodesAsync(TUser user, IEnumerable<string> ...
method RedeemCodeAsync (line 1434) | public virtual async Task<bool> RedeemCodeAsync(TUser user, string cod...
method SetTwoFactorEnabledAsync (line 1467) | public virtual Task SetTwoFactorEnabledAsync(TUser user, bool enabled,
method GetTwoFactorEnabledAsync (line 1491) | public virtual Task<bool> GetTwoFactorEnabledAsync(TUser user,
method CreateUserRole (line 1506) | protected virtual TUserRole CreateUserRole(TUser user, TRole role)
method CreateUserClaim (line 1522) | protected virtual TClaim CreateUserClaim(TUser user, Claim claim)
method CreateUserLogin (line 1538) | protected virtual TUserLogin CreateUserLogin(TUser user, UserLoginInfo...
method CreateUserToken (line 1555) | protected TUserToken CreateUserToken(TUser user, string loginProvider,...
method SaveChanges (line 1572) | protected Task SaveChanges(CancellationToken cancellationToken)
method ConvertIdFromString (line 1584) | public virtual TKey ConvertIdFromString(string id)
method ConvertIdToString (line 1596) | public virtual string ConvertIdToString(TKey id)
method ThrowIfDisposed (line 1607) | protected void ThrowIfDisposed()
class MongoDbUserStore (line 177) | public class MongoDbUserStore<TUser, TRole, TContext, TKey, TClaim, TUse...
method MongoDbUserStore (line 26) | public MongoDbUserStore(IdentityMongoDbContext context, IdentityErrorD...
method MongoDbUserStore (line 45) | public MongoDbUserStore(IdentityMongoDbContext<TKey> context, Identity...
method MongoDbUserStore (line 69) | public MongoDbUserStore(IdentityMongoDbContext<TUser, TRole, ObjectId>...
method MongoDbUserStore (line 113) | public MongoDbUserStore(
method MongoDbUserStore (line 160) | public MongoDbUserStore(TContext context, IdentityErrorDescriber descr...
method MongoDbUserStore (line 212) | public MongoDbUserStore(TContext context, IdentityErrorDescriber descr...
method GetUserIdAsync (line 251) | public virtual Task<string> GetUserIdAsync(TUser user,
method GetUserNameAsync (line 271) | public virtual Task<string> GetUserNameAsync(TUser user,
method SetUserNameAsync (line 289) | public virtual Task SetUserNameAsync(TUser user, string userName,
method GetNormalizedUserNameAsync (line 310) | public virtual Task<string> GetNormalizedUserNameAsync(TUser user,
method SetNormalizedUserNameAsync (line 329) | public virtual Task SetNormalizedUserNameAsync(TUser user, string norm...
method CreateAsync (line 350) | public virtual async Task<IdentityResult> CreateAsync(TUser user,
method UpdateAsync (line 372) | public virtual async Task<IdentityResult> UpdateAsync(TUser user,
method DeleteAsync (line 404) | public virtual async Task<IdentityResult> DeleteAsync(TUser user,
method FindByIdAsync (line 434) | public virtual Task<TUser> FindByIdAsync(string userId,
method FindByNameAsync (line 455) | public virtual Task<TUser> FindByNameAsync(string normalizedUserName,
method Dispose (line 471) | public void Dispose()
method SetTokenAsync (line 488) | public virtual Task SetTokenAsync(TUser user, string loginProvider, st...
method RemoveTokenAsync (line 519) | public Task RemoveTokenAsync(TUser user, string loginProvider, string ...
method GetTokenAsync (line 546) | public Task<string> GetTokenAsync(TUser user, string loginProvider, st...
method SetAuthenticatorKeyAsync (line 571) | public virtual Task SetAuthenticatorKeyAsync(TUser user, string key, C...
method GetAuthenticatorKeyAsync (line 588) | public virtual Task<string> GetAuthenticatorKeyAsync(TUser user, Cance...
method GetClaimsAsync (line 602) | public virtual Task<IList<Claim>> GetClaimsAsync(TUser user,
method AddClaimsAsync (line 623) | public virtual Task AddClaimsAsync(TUser user, IEnumerable<Claim> claims,
method ReplaceClaimAsync (line 646) | public virtual Task ReplaceClaimAsync(TUser user, Claim claim, Claim n...
method RemoveClaimsAsync (line 671) | public virtual Task RemoveClaimsAsync(TUser user, IEnumerable<Claim> c...
method GetUsersForClaimAsync (line 699) | public virtual async Task<IList<TUser>> GetUsersForClaimAsync(Claim cl...
method GetEmailConfirmedAsync (line 727) | public virtual Task<bool> GetEmailConfirmedAsync(TUser user,
method SetEmailConfirmedAsync (line 748) | public virtual Task SetEmailConfirmedAsync(TUser user, bool confirmed,
method SetEmailAsync (line 767) | public virtual Task SetEmailAsync(TUser user, string email,
method GetEmailAsync (line 788) | public virtual Task<string> GetEmailAsync(TUser user,
method GetNormalizedEmailAsync (line 808) | public virtual Task<string> GetNormalizedEmailAsync(TUser user,
method SetNormalizedEmailAsync (line 826) | public virtual Task SetNormalizedEmailAsync(TUser user, string normali...
method FindByEmailAsync (line 847) | public virtual Task<TUser> FindByEmailAsync(string normalizedEmail,
method GetLockoutEndDateAsync (line 869) | public virtual Task<DateTimeOffset?> GetLockoutEndDateAsync(TUser user,
method SetLockoutEndDateAsync (line 891) | public virtual Task SetLockoutEndDateAsync(TUser user, DateTimeOffset?...
method IncrementAccessFailedCountAsync (line 912) | public virtual Task<int> IncrementAccessFailedCountAsync(TUser user,
method ResetAccessFailedCountAsync (line 930) | public virtual Task ResetAccessFailedCountAsync(TUser user,
method GetAccessFailedCountAsync (line 948) | public virtual Task<int> GetAccessFailedCountAsync(TUser user,
method GetLockoutEnabledAsync (line 968) | public virtual Task<bool> GetLockoutEnabledAsync(TUser user,
method SetLockoutEnabledAsync (line 986) | public virtual Task SetLockoutEnabledAsync(TUser user, bool enabled,
method AddLoginAsync (line 1005) | public virtual Task AddLoginAsync(TUser user, UserLoginInfo login,
method RemoveLoginAsync (line 1027) | public virtual Task RemoveLoginAsync(TUser user, string loginProvider,...
method GetLoginsAsync (line 1057) | public virtual Task<IList<UserLoginInfo>> GetLoginsAsync(TUser user,
method FindByLoginAsync (line 1083) | public virtual async Task<TUser> FindByLoginAsync(string loginProvider...
method SetPasswordHashAsync (line 1106) | public virtual Task SetPasswordHashAsync(TUser user, string passwordHash,
method GetPasswordHashAsync (line 1124) | public virtual Task<string> GetPasswordHashAsync(TUser user,
method HasPasswordAsync (line 1144) | public virtual Task<bool> HasPasswordAsync(TUser user,
method SetPhoneNumberAsync (line 1161) | public virtual Task SetPhoneNumberAsync(TUser user, string phoneNumber,
method GetPhoneNumberAsync (line 1182) | public virtual Task<string> GetPhoneNumberAsync(TUser user,
method GetPhoneNumberConfirmedAsync (line 1203) | public virtual Task<bool> GetPhoneNumberConfirmedAsync(TUser user,
method SetPhoneNumberConfirmedAsync (line 1221) | public virtual Task SetPhoneNumberConfirmedAsync(TUser user, bool conf...
method AddToRoleAsync (line 1240) | public virtual async Task AddToRoleAsync(TUser user, string normalized...
method RemoveFromRoleAsync (line 1264) | public virtual Task RemoveFromRoleAsync(TUser user, string normalizedR...
method GetRolesAsync (line 1287) | public virtual Task<IList<string>> GetRolesAsync(TUser user,
method IsInRoleAsync (line 1313) | public virtual Task<bool> IsInRoleAsync(TUser user, string normalizedR...
method GetUsersInRoleAsync (line 1335) | public virtual async Task<IList<TUser>> GetUsersInRoleAsync(string nor...
method SetSecurityStampAsync (line 1357) | public virtual Task SetSecurityStampAsync(TUser user, string stamp,
method GetSecurityStampAsync (line 1378) | public virtual Task<string> GetSecurityStampAsync(TUser user,
method CountCodesAsync (line 1395) | public virtual Task<int> CountCodesAsync(TUser user, CancellationToken...
method ReplaceCodesAsync (line 1416) | public virtual Task ReplaceCodesAsync(TUser user, IEnumerable<string> ...
method RedeemCodeAsync (line 1434) | public virtual async Task<bool> RedeemCodeAsync(TUser user, string cod...
method SetTwoFactorEnabledAsync (line 1467) | public virtual Task SetTwoFactorEnabledAsync(TUser user, bool enabled,
method GetTwoFactorEnabledAsync (line 1491) | public virtual Task<bool> GetTwoFactorEnabledAsync(TUser user,
method CreateUserRole (line 1506) | protected virtual TUserRole CreateUserRole(TUser user, TRole role)
method CreateUserClaim (line 1522) | protected virtual TClaim CreateUserClaim(TUser user, Claim claim)
method CreateUserLogin (line 1538) | protected virtual TUserLogin CreateUserLogin(TUser user, UserLoginInfo...
method CreateUserToken (line 1555) | protected TUserToken CreateUserToken(TUser user, string loginProvider,...
method SaveChanges (line 1572) | protected Task SaveChanges(CancellationToken cancellationToken)
method ConvertIdFromString (line 1584) | public virtual TKey ConvertIdFromString(string id)
method ConvertIdToString (line 1596) | public virtual string ConvertIdToString(TKey id)
method ThrowIfDisposed (line 1607) | protected void ThrowIfDisposed()
FILE: src/Shared/Check.cs
class Check (line 15) | [DebuggerStepThrough]
method NotNull (line 18) | [ContractAnnotation("value:null => halt")]
method IsInstanceOfType (line 31) | [ContractAnnotation("value:null => halt")]
method Is (line 46) | [ContractAnnotation("value:null => halt")]
method NotNull (line 53) | [ContractAnnotation("value:null => halt")]
method NotEmpty (line 70) | [ContractAnnotation("value:null => halt")]
method NotEmpty (line 85) | [ContractAnnotation("value:null => halt")]
method NullButNotEmpty (line 108) | public static string NullButNotEmpty(string value, [InvokerParameterNa...
method HasNoNulls (line 121) | public static IReadOnlyList<T> HasNoNulls<T>(IReadOnlyList<T> value, [...
method NotOwned (line 136) | public static IEntityType NotOwned(IEntityType entityType,
FILE: src/Shared/CodeAnnotations.cs
class NotNullAttribute (line 8) | [AttributeUsage(
class CanBeNullAttribute (line 16) | [AttributeUsage(
class InvokerParameterNameAttribute (line 24) | [AttributeUsage(AttributeTargets.Parameter)]
class NoEnumerationAttribute (line 29) | [AttributeUsage(AttributeTargets.Parameter)]
class ContractAnnotationAttribute (line 34) | [AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]
method ContractAnnotationAttribute (line 41) | public ContractAnnotationAttribute([NotNull] string contract)
method ContractAnnotationAttribute (line 46) | public ContractAnnotationAttribute([NotNull] string contract, bool for...
class UsedImplicitlyAttribute (line 53) | [AttributeUsage(AttributeTargets.All)]
method UsedImplicitlyAttribute (line 56) | public UsedImplicitlyAttribute()
method UsedImplicitlyAttribute (line 61) | public UsedImplicitlyAttribute(ImplicitUseKindFlags useKindFlags)
method UsedImplicitlyAttribute (line 66) | public UsedImplicitlyAttribute(ImplicitUseTargetFlags targetFlags)
method UsedImplicitlyAttribute (line 71) | public UsedImplicitlyAttribute(
class StringFormatMethodAttribute (line 82) | [AttributeUsage(AttributeTargets.Constructor | AttributeTargets.Method |...
method StringFormatMethodAttribute (line 85) | public StringFormatMethodAttribute([NotNull] string formatParameterName)
type ImplicitUseKindFlags (line 94) | [Flags]
type ImplicitUseTargetFlags (line 104) | [Flags]
FILE: src/Shared/MemberInfoExtensions.cs
class MemberInfoExtensions (line 6) | internal static class MemberInfoExtensions
method GetMemberType (line 8) | public static Type GetMemberType(this MemberInfo memberInfo)
FILE: src/Shared/PropertyInfoExtensions.cs
class PropertyInfoExtensions (line 11) | [DebuggerStepThrough]
method IsStatic (line 14) | public static bool IsStatic(this PropertyInfo property)
method IsCandidateProperty (line 17) | public static bool IsCandidateProperty(this PropertyInfo propertyInfo,...
method FindCandidateNavigationPropertyType (line 24) | public static Type FindCandidateNavigationPropertyType(this PropertyIn...
method FindGetterProperty (line 47) | public static PropertyInfo FindGetterProperty([NotNull] this PropertyI...
method FindSetterProperty (line 52) | public static PropertyInfo FindSetterProperty([NotNull] this PropertyI...
FILE: src/Shared/SharedTypeExtensions.cs
class SharedTypeExtensions (line 9) | [DebuggerStepThrough]
method UnwrapNullableType (line 12) | public static Type UnwrapNullableType(this Type type) => Nullable.GetU...
method IsNullableType (line 14) | public static bool IsNullableType(this Type type)
method IsValidEntityType (line 22) | public static bool IsValidEntityType(this Type type)
method MakeNullable (line 25) | public static Type MakeNullable(this Type type)
method IsInteger (line 30) | public static bool IsInteger(this Type type)
method GetAnyProperty (line 45) | public static PropertyInfo GetAnyProperty(this Type type, string name)
method IsNonIntegerPrimitive (line 56) | private static bool IsNonIntegerPrimitive(this Type type)
method IsPrimitive (line 73) | public static bool IsPrimitive(this Type type)
method IsInstantiable (line 76) | public static bool IsInstantiable(this Type type) => IsInstantiable(ty...
method IsInstantiable (line 78) | private static bool IsInstantiable(TypeInfo type)
method IsGrouping (line 83) | public static bool IsGrouping(this Type type) => IsGrouping(type.GetTy...
method IsGrouping (line 85) | private static bool IsGrouping(TypeInfo type)
method UnwrapEnumType (line 90) | public static Type UnwrapEnumType(this Type type)
method GetSequenceType (line 103) | public static Type GetSequenceType(this Type type)
method TryGetSequenceType (line 115) | public static Type TryGetSequenceType(this Type type)
method TryGetElementType (line 122) | public static Type TryGetElementType(this Type type, Type interfaceOrB...
method GetGenericTypeImplementations (line 134) | public static IEnumerable<Type> GetGenericTypeImplementations(this Typ...
method GetImplementationTypes (line 149) | public static IEnumerable<Type> GetImplementationTypes(this Type type,...
method GetImplementationType (line 159) | public static Type GetImplementationType(this Type type, Type interfac...
method TryGetImplementationType (line 163) | public static bool TryGetImplementationType(this Type type, Type inter...
method GetBaseTypes (line 166) | public static IEnumerable<Type> GetBaseTypes(this Type type)
method GetTypesInHierarchy (line 178) | public static IEnumerable<Type> GetTypesInHierarchy(this Type type)
method GetDeclaredConstructor (line 188) | public static ConstructorInfo GetDeclaredConstructor(this Type type, T...
method GetPropertiesInHierarchy (line 198) | public static IEnumerable<PropertyInfo> GetPropertiesInHierarchy(this ...
method GetMembersInHierarchy (line 214) | public static IEnumerable<MemberInfo> GetMembersInHierarchy(this Type ...
method GetDefaultValue (line 263) | public static object GetDefaultValue(this Type type)
method GetConstructableTypes (line 279) | public static IEnumerable<TypeInfo> GetConstructableTypes(this Assembl...
method GetLoadableDefinedTypes (line 284) | public static IEnumerable<TypeInfo> GetLoadableDefinedTypes(this Assem...
FILE: src/Shared/StringBuilderExtensions.cs
class StringBuilderExtensions (line 8) | internal static class StringBuilderExtensions
method AppendJoin (line 10) | public static StringBuilder AppendJoin(
method AppendJoin (line 14) | public static StringBuilder AppendJoin(
method AppendJoin (line 18) | public static StringBuilder AppendJoin<T>(
method AppendJoin (line 41) | public static StringBuilder AppendJoin<T, TParam>(
method AppendJoin (line 65) | public static StringBuilder AppendJoin<T, TParam1, TParam2>(
FILE: test/Blueshift.EntityFrameworkCore.MongoDB.Tests/Adapter/Conventions/AbstractClassConventionTest.cs
class AbstractClassConventionTest (line 10) | public class AbstractClassConventionTest
method Sets_is_root_class_and_discriminator_required_true_for_abstract_type (line 12) | [Theory]
FILE: test/Blueshift.EntityFrameworkCore.MongoDB.Tests/Adapter/Conventions/IgnoreEmptyEnumerablesConventionTests.cs
class IgnoreEmptyEnumerablesConventionTests (line 8) | public class IgnoreEmptyEnumerablesConventionTests
method Should_not_serialize_empty_enumerables (line 10) | [Fact]
method Should_serialize_non_empty_enumerables (line 22) | [Fact]
FILE: test/Blueshift.EntityFrameworkCore.MongoDB.Tests/Adapter/Conventions/IgnoreNullOrEmptyStringsConventionTests.cs
class IgnoreNullOrEmptyStringsConventionTests (line 8) | public class IgnoreNullOrEmptyStringsConventionTests
method Should_not_serialize_null_or_empty_strings (line 10) | [Theory]
FILE: test/Blueshift.EntityFrameworkCore.MongoDB.Tests/Adapter/Conventions/KeyAttributeConventionTests.cs
class KeyAttributeConventionTests (line 11) | public class KeyAttributeConventionTests
method Should_set_id_member_when_key_attribute_present (line 13) | [Fact]
method Should_not_set_id_member_when_key_attribute_present (line 28) | [Theory]
FILE: test/Blueshift.EntityFrameworkCore.MongoDB.Tests/Adapter/EntityFrameworkConventionPackTests.cs
class EntityFrameworkConventionPackTests (line 10) | public class EntityFrameworkConventionPackTests
method Singleton_contains_default_convention_set (line 12) | [Theory]
FILE: test/Blueshift.EntityFrameworkCore.MongoDB.Tests/Adapter/Serialization/BsonSerializerExtensionsTests.cs
class BsonSerializerExtensionsTests (line 15) | public class BsonSerializerExtensionsTests : IClassFixture<ZooEntityFixt...
method BsonSerializerExtensionsTests (line 19) | public BsonSerializerExtensionsTests(ZooEntityFixture zooEntityFixture)
method GetDiscriminator (line 27) | private static string GetDiscriminator(Animal animal)
method VerifyChildSerialier (line 37) | private static void VerifyChildSerialier(IBsonSerializer bsonSerializer)
method Can_denormalize_enumerables (line 54) | [Theory]
method Can_denormalize_enumerable_interfaces (line 88) | [Theory]
method Can_denormalize_dictionaries (line 111) | [Theory]
method Can_denormalize_array (line 135) | [Theory]
method Can_denormalize_ReadOnlyCollection (line 149) | [Fact]
method Can_denormalize_ReadOnlyCollection_sub_class (line 168) | [Fact]
FILE: test/Blueshift.EntityFrameworkCore.MongoDB.Tests/Adapter/Serialization/DenormalizingBsonClassMapSerializerTests.cs
class DenormalizingBsonClassMapSerializerTests (line 10) | public class DenormalizingBsonClassMapSerializerTests : IClassFixture<Zo...
method DenormalizingBsonClassMapSerializerTests (line 21) | public DenormalizingBsonClassMapSerializerTests(ZooEntityFixture zooEn...
method Correctly_Serializes_Entity_Reference (line 26) | [Fact]
method Correctly_Serializes_Entity_Reference_With_Denormalized_Properties (line 40) | [Fact]
method Deserialize_uses_default_deserializer (line 51) | [Fact]
method Deserialize_can_deserialize_partial_class (line 69) | [Fact]
FILE: test/Blueshift.EntityFrameworkCore.MongoDB.Tests/Adapter/Update/MongoDbWriteModelFactoryTests.cs
class MongoDbWriteModelFactoryTests (line 15) | public class MongoDbWriteModelFactoryTests
method GetUpdateEntry (line 17) | private IUpdateEntry GetUpdateEntry(EntityState entityState, object en...
method CreateMongoDbWriteModelFactory (line 26) | private IMongoDbWriteModelFactory<TEntity> CreateMongoDbWriteModelFact...
method Creates_insert_one_model_for_added_entity (line 35) | [Fact]
method Creates_insert_one_model_for_added_entity_and_updates_concurrency_field (line 46) | [Fact]
method Creates_ReplaceOneModel_for_modified_entity_referencing_only_id (line 60) | [Fact]
method Creates_ReplaceOneModel_for_modified_entity_referencing_concurrency_field (line 75) | [Fact]
method Creates_DeleteOneModel_for_deleted_entity_referencing_only_id (line 95) | [Fact]
method Creates_DeleteOneModel_for_deleted_entity_referencing_concurrency_field (line 107) | [Fact]
FILE: test/Blueshift.EntityFrameworkCore.MongoDB.Tests/Metadata/Conventions/MongoDatabaseConventionTests.cs
class MongoDatabaseConventionTests (line 10) | public class MongoDatabaseConventionTests
method Should_set_expected_database_name (line 12) | [Theory]
class MongoDatabaseAttributeDbContextBase (line 28) | private class MongoDatabaseAttributeDbContextBase : DbContext
method OnConfiguring (line 30) | protected override void OnConfiguring(DbContextOptionsBuilder option...
class ZooDb (line 38) | private class ZooDb : MongoDatabaseAttributeDbContextBase { }
class ZooDbContext (line 40) | private class ZooDbContext : MongoDatabaseAttributeDbContextBase { }
class ZooContext (line 42) | private class ZooContext : MongoDatabaseAttributeDbContextBase { }
class ZooMongo (line 44) | private class ZooMongo : MongoDatabaseAttributeDbContextBase { }
class ZooMongoDb (line 46) | private class ZooMongoDb : MongoDatabaseAttributeDbContextBase { }
class ZooMongoDbContext (line 48) | private class ZooMongoDbContext : MongoDatabaseAttributeDbContextBase { }
class ZooMongoContext (line 50) | private class ZooMongoContext : MongoDatabaseAttributeDbContextBase { }
class AnnodatedZooContext (line 52) | [MongoDatabase("zoo")]
class DifferentlyAnnodatedZooContext (line 55) | [MongoDatabase("zhou")]
FILE: test/Blueshift.EntityFrameworkCore.MongoDB.Tests/Metadata/MongoDbEntityTypeAnnotationsTests.cs
class MongoDbEntityTypeAnnotationsTests (line 8) | public class MongoDbEntityTypeAnnotationsTests
method Collection_name_is_pluralized_camel_cased_entity_type_by_default (line 10) | [Fact]
method Can_write_collection_name (line 20) | [Fact]
method Discriminator_is_type_name_by_default (line 33) | [Fact]
method Can_write_discriminator (line 42) | [Fact]
FILE: test/Blueshift.EntityFrameworkCore.MongoDB.Tests/Metadata/MongoDbModelAnnotationsTests.cs
class MongoDbModelAnnotationsTests (line 7) | public class MongoDbModelAnnotationsTests
method Database_name_null_by_default (line 9) | [Fact]
method Can_write_database_name (line 16) | [Fact]
FILE: test/Blueshift.EntityFrameworkCore.MongoDB.Tests/MongoDbContextTestBase.cs
class MongoDbContextTestBase (line 9) | public abstract class MongoDbContextTestBase : IDisposable
method MongoDbContextTestBase (line 15) | protected MongoDbContextTestBase()
method Dispose (line 26) | public void Dispose()
method ExecuteUnitOfWork (line 31) | protected void ExecuteUnitOfWork(Action<ZooDbContext> unitOfWork)
method ExecuteUnitOfWorkAsync (line 40) | protected async Task ExecuteUnitOfWorkAsync(Func<ZooDbContext, Task> u...
method ExecuteUnitOfWorkAsync (line 49) | protected async Task<TResult> ExecuteUnitOfWorkAsync<TResult>(Func<Zoo...
FILE: test/Blueshift.EntityFrameworkCore.MongoDB.Tests/MongoDbContextTests.cs
class MongoDbContextTests (line 14) | public class MongoDbContextTests : MongoDbContextTestBase, IClassFixture...
method MongoDbContextTests (line 18) | public MongoDbContextTests(ZooEntityFixture zooEntityFixture)
method Can_query_from_mongodb (line 23) | [Fact]
method Can_write_simple_record (line 34) | [Fact]
method Can_write_complex_record (line 51) | [Fact]
method Can_write_polymorphic_records (line 63) | [Fact]
method Can_update_existing_entity (line 86) | [Fact]
method Can_update_sub_document (line 114) | [Fact]
method Concurrency_field_prevents_updates (line 158) | [Fact]
method Can_query_complex_record (line 184) | [Fact]
method Can_query_polymorphic_sub_types (line 207) | [Fact]
method Can_list_async (line 264) | [Fact]
method Can_query_first_or_default_async (line 286) | [Fact]
method Can_include_direct_collection (line 306) | [Fact]
method Can_include_direct_reference (line 332) | [Fact]
method Can_include_self_reference (line 358) | [Fact(Skip = "Test currently fails.")]
method Can_include_owned_collection (line 383) | [Fact(Skip = "IncludeCompiler does not currently support DI or being i...
method Can_include_owned_reference (line 422) | [Fact]
method Can_execute_group_join_without_includes (line 453) | [Fact]
method AssignAssignments (line 501) | private static Enclosure AssignAssignments(Enclosure enclosure, IEnume...
method AssignAssignee (line 519) | private static ZooAssignment AssignAssignee(ZooAssignment assignment, ...
method Concurrent_query (line 525) | [Fact]
method Can_list_async_twice (line 558) | [Fact(Skip = "Test currently fails.")]
method Can_query_multiple_concurrent_items_from_large_data_set (line 590) | [Fact(Skip = "This test is a performance test and take a long time to ...
FILE: test/Blueshift.EntityFrameworkCore.MongoDB.Tests/MongoDbUtilitiesTests.cs
class MongoDbUtilitiesTests (line 9) | public class MongoDbUtilitiesTests
method Pluralize_singular_strings (line 11) | [Theory]
method Pluralize_doesnt_change_plurals (line 20) | [Theory]
method Camel_case_uppercase_strings (line 27) | [Theory]
method Camel_case_doesnt_change_trailing_words (line 35) | [Theory]
method GetCollectionEntityType_returns_least_derived_entity_type (line 43) | [Theory]
method IsDocumentRootEntityType_returns_true_for_root_entity_types (line 61) | [Theory]
method IsDocumentRootEntityType_returns_false_for_owned_entity_types (line 78) | [Theory]
FILE: test/Blueshift.EntityFrameworkCore.MongoDB.Tests/Storage/MongoDbConnectionTests.cs
class MongoDbConnectionTests (line 20) | public class MongoDbConnectionTests
method MongoDbConnectionTests (line 28) | public MongoDbConnectionTests()
method GetModel (line 37) | private IModel GetModel()
method MockMongoClient (line 66) | private Mock<IMongoClient> MockMongoClient()
method MockMongoDatabase (line 79) | private Mock<IMongoDatabase> MockMongoDatabase()
method MockEmployee (line 89) | private Mock<IMongoCollection<Employee>> MockEmployee()
method MockMongoDbTypeMappingSource (line 92) | private Mock<IMongoDbTypeMappingSource> MockMongoDbTypeMappingSource()
method Get_database_calls_mongo_client_get_database (line 95) | [Fact]
method Get_database_async_calls_mongo_client_get_database (line 104) | [Fact]
method Drop_database_calls_mongo_client_drop_database (line 113) | [Fact]
method Drop_database_async_calls_mongo_client_drop_database_async (line 122) | [Fact]
method Get_collection_calls_mongo_database_get_collection (line 131) | [Fact]
FILE: test/Blueshift.EntityFrameworkCore.MongoDB.Tests/Storage/MongoDbDatabaseCreatorTests.cs
class MongoDbDatabaseCreatorTests (line 10) | public class MongoDbDatabaseCreatorTests
method Ensure_created_returns_false (line 12) | [Fact]
method Ensure_created_async_returns_false (line 27) | [Fact]
method Ensure_deleted_succeeds (line 42) | [Fact]
method Ensure_deleted_async_succeeds (line 56) | [Fact]
FILE: test/Blueshift.EntityFrameworkCore.MongoDB.Tests/Storage/MongoDbDatabaseTests.cs
class MongoDbDatabaseTests (line 27) | public class MongoDbDatabaseTests
method Save_changes_returns_requested_document_count (line 29) | [Fact]
FILE: test/Blueshift.EntityFrameworkCore.MongoDB.Tests/Storage/MongoDbTypeMappingSourceTests.cs
class MongoDbTypeMappingSourceTests (line 13) | public class MongoDbTypeMappingSourceTests
method Primitives_and_enumerables_of_primitives_are_mapped (line 19) | [Theory]
method Entities_and_complex_types_are_not_mapped (line 68) | [Theory]
FILE: test/Blueshift.EntityFrameworkCore.MongoDB.Tests/ValueGeneration/MongoDbValueGeneratorSelectorTests.cs
class MongoDbValueGeneratorSelectorTests (line 10) | public class MongoDbValueGeneratorSelectorTests
method X (line 12) | [Fact]
FILE: test/Blueshift.EntityFrameworkCore.MongoDB.Tests/ValueGeneration/ObjectIdValueGeneratorTests.cs
class ObjectIdValueGeneratorTests (line 7) | public class ObjectIdValueGeneratorTests
method Generates_temporary_values_returns_false (line 9) | [Fact]
method Does_not_generate_empty_object_id (line 16) | [Fact]
method Generates_unique_object_ids (line 23) | [Fact]
FILE: test/Blueshift.Identity.MongoDB.Tests/MongoDbIdentityFixture.cs
class MongoDbIdentityFixture (line 8) | public class MongoDbIdentityFixture : IDisposable
method MongoDbIdentityFixture (line 15) | public MongoDbIdentityFixture()
method GetService (line 31) | public T GetService<T>()
method Dispose (line 35) | public void Dispose()
method Dispose (line 41) | protected virtual void Dispose(bool disposing)
FILE: test/Blueshift.Identity.MongoDB.Tests/MongoDbIdentityTestBase.cs
class MongoDbIdentityStoreTestBase (line 8) | [Collection("MongoDB.Identity.Tests")]
method MongoDbIdentityStoreTestBase (line 20) | protected MongoDbIdentityStoreTestBase(MongoDbIdentityFixture mongoDbI...
method CreateRole (line 26) | protected virtual MongoDbIdentityRole CreateRole()
method CreateRoleInDatabase (line 33) | protected async Task<MongoDbIdentityRole> CreateRoleInDatabase()
method CreateUser (line 40) | protected virtual MongoDbIdentityUser CreateUser()
method CreateUserInDatabase (line 47) | protected async Task<MongoDbIdentityUser> CreateUserInDatabase()
FILE: test/Blueshift.Identity.MongoDB.Tests/MongoDbIdentityTestCollection.cs
class MongoDdIdentityTestCollection (line 5) | [CollectionDefinition("MongoDB.Identity.Tests")]
FILE: test/Blueshift.Identity.MongoDB.Tests/MongoDbRoleClaimStoreTests.cs
class MongoDbRoleClaimStoreTests (line 10) | public class MongoDbRoleClaimStoreTests : MongoDbIdentityStoreTestBase
method MongoDbRoleClaimStoreTests (line 25) | public MongoDbRoleClaimStoreTests(MongoDbIdentityFixture mongoDbIdenti...
method CreateRole (line 31) | protected override MongoDbIdentityRole CreateRole()
method Can_add_claim_async (line 39) | [Fact]
method Can_get_claims_async (line 48) | [Fact]
method Can_remove_claims_async (line 56) | [Fact]
FILE: test/Blueshift.Identity.MongoDB.Tests/MongoDbRoleStoreTests.cs
class MongoDbRoleStoreTests (line 9) | public class MongoDbRoleStoreTests : MongoDbIdentityStoreTestBase
method MongoDbRoleStoreTests (line 13) | public MongoDbRoleStoreTests(MongoDbIdentityFixture mongoDbIdentityFix...
method Can_create_role_async (line 19) | [Fact]
method Can_delete_role_async (line 25) | [Fact]
method Can_find_by_id_async (line 32) | [Fact]
method Can_find_by_name_async (line 39) | [Fact]
method Can_get_normalized_role_name_async (line 46) | [Fact]
method Can_get_role_id_async (line 53) | [Fact]
method Can_get_user_name_async (line 60) | [Fact]
method Can_set_normalized_role_name_async (line 67) | [Fact]
method Can_set_role_name_async (line 76) | [Fact]
method Can_update_role_async (line 85) | [Fact]
FILE: test/Blueshift.Identity.MongoDB.Tests/MongoDbUserAuthenticationTokenStoreTests.cs
class MongoDbUserAuthenticationTokenStoreTests (line 10) | public class MongoDbUserAuthenticationTokenStoreTests : MongoDbIdentityS...
method MongoDbUserAuthenticationTokenStoreTests (line 19) | public MongoDbUserAuthenticationTokenStoreTests(MongoDbIdentityFixture...
method CreateUser (line 25) | protected override MongoDbIdentityUser CreateUser()
method Can_get_token_async (line 42) | [Fact]
method Can_set_token_async (line 52) | [Fact]
method Can_remove_token_async (line 65) | [Fact]
FILE: test/Blueshift.Identity.MongoDB.Tests/MongoDbUserAuthenticatorKeyStoreTests.cs
class MongoDbUserAuthenticatorKeyStoreTests (line 10) | public class MongoDbUserAuthenticatorKeyStoreTests : MongoDbIdentityStor...
method MongoDbUserAuthenticatorKeyStoreTests (line 16) | public MongoDbUserAuthenticatorKeyStoreTests(MongoDbIdentityFixture mo...
method CreateUser (line 22) | protected override MongoDbIdentityUser CreateUser()
method Can_get_authenticator_key_async (line 38) | [Fact]
method Can_set_token_async (line 45) | [Fact]
FILE: test/Blueshift.Identity.MongoDB.Tests/MongoDbUserClaimStoreTests.cs
class MongoDbUserClaimStoreTests (line 10) | public class MongoDbUserClaimStoreTests : MongoDbIdentityStoreTestBase
method MongoDbUserClaimStoreTests (line 25) | public MongoDbUserClaimStoreTests(MongoDbIdentityFixture mongoDbIdenti...
method CreateUser (line 31) | protected override MongoDbIdentityUser CreateUser()
method Can_add_claim_async (line 39) | [Fact]
method Can_get_claims_async (line 48) | [Fact]
method Can_get_users_for_claim_async (line 56) | [Fact]
method Can_remove_claims_async (line 65) | [Fact]
method Can_replace_claims_async (line 74) | [Fact]
FILE: test/Blueshift.Identity.MongoDB.Tests/MongoDbUserEmailStoreTests.cs
class MongoDbUserEmailStoreTests (line 9) | public class MongoDbUserEmailStoreTests : MongoDbIdentityStoreTestBase
method MongoDbUserEmailStoreTests (line 16) | public MongoDbUserEmailStoreTests(MongoDbIdentityFixture mongoDbIdenti...
method CreateUser (line 22) | protected override MongoDbIdentityUser CreateUser()
method Can_get_email_async (line 31) | [Fact]
method Can_set_email_async (line 38) | [Fact]
method Can_get_normalized_email_async (line 47) | [Fact]
method Can_set_normalized_email_async (line 54) | [Fact]
method Can_check_email_confirmed_async (line 63) | [Fact]
method Can_set_email_confirmed_async (line 73) | [Fact]
method Can_find_by_email_async (line 83) | [Fact]
FILE: test/Blueshift.Identity.MongoDB.Tests/MongoDbUserLockoutStoreTests.cs
class MongoDbUserLockoutStoreTests (line 9) | public class MongoDbUserLockoutStoreTests : MongoDbIdentityStoreTestBase
method MongoDbUserLockoutStoreTests (line 15) | public MongoDbUserLockoutStoreTests(MongoDbIdentityFixture mongoDbIden...
method CreateUser (line 21) | protected override MongoDbIdentityUser CreateUser()
method Can_get_access_failed_count_async (line 28) | [Fact]
method Can_check_lockout_enabled_async (line 35) | [Fact]
method Can_set_lockout_enabled_async (line 45) | [Fact]
method Can_get_lockout_end_date_async (line 55) | [Fact]
method Can_set_lockout_end_date_async (line 62) | [Fact]
method Can_reset_access_failed_count_async (line 71) | [Fact]
FILE: test/Blueshift.Identity.MongoDB.Tests/MongoDbUserLoginStoreTests.cs
class MongoDbUserLoginStoreTests (line 10) | public class MongoDbUserLoginStoreTests : MongoDbIdentityStoreTestBase
method MongoDbUserLoginStoreTests (line 18) | public MongoDbUserLoginStoreTests(MongoDbIdentityFixture mongoDbIdenti...
method CreateUser (line 24) | protected override MongoDbIdentityUser CreateUser()
method Can_add_login_async (line 36) | [Fact]
method Can_remove_login_async (line 49) | [Fact]
method Can_find_by_login_async (line 57) | [Fact]
method Can_get_logins_async (line 64) | [Fact]
FILE: test/Blueshift.Identity.MongoDB.Tests/MongoDbUserPasswordStoreTests.cs
class MongoDbUserPasswordStoreTests (line 9) | public class MongoDbUserPasswordStoreTests : MongoDbIdentityStoreTestBase
method MongoDbUserPasswordStoreTests (line 15) | public MongoDbUserPasswordStoreTests(MongoDbIdentityFixture mongoDbIde...
method CreateUser (line 21) | protected override MongoDbIdentityUser CreateUser()
method Can_get_password_hash_async (line 28) | [Fact]
method Can_set_password_hash_async (line 35) | [Fact]
method Can_check_has_password_async (line 44) | [Fact]
FILE: test/Blueshift.Identity.MongoDB.Tests/MongoDbUserPhoneNumberStoreTests.cs
class MongoDbUserPhoneNumberStoreTests (line 9) | public class MongoDbUserPhoneNumberStoreTests : MongoDbIdentityStoreTest...
method MongoDbUserPhoneNumberStoreTests (line 15) | public MongoDbUserPhoneNumberStoreTests(MongoDbIdentityFixture mongoDb...
method CreateUser (line 21) | protected override MongoDbIdentityUser CreateUser()
method Can_get_phone_number_async (line 29) | [Fact]
method Can_set_phone_number_async (line 36) | [Fact]
method Can_check_phone_number_confirmed_async (line 45) | [Fact]
method Can_set_phone_number_confirmed_async (line 55) | [Fact]
FILE: test/Blueshift.Identity.MongoDB.Tests/MongoDbUserRoleStoreTests.cs
class MongoDbUserRoleStoreTests (line 10) | public class MongoDbUserRoleStoreTests : MongoDbIdentityStoreTestBase
method MongoDbUserRoleStoreTests (line 19) | public MongoDbUserRoleStoreTests(MongoDbIdentityFixture mongoDbIdentit...
method CreateUser (line 44) | protected override MongoDbIdentityUser CreateUser()
method Can_add_to_role_async (line 55) | [Fact]
method Can_get_roles_async (line 65) | [Fact]
method Can_get_users_in_role_async (line 74) | [Fact]
method Can_remove_from_role_async (line 81) | [Fact]
FILE: test/Blueshift.Identity.MongoDB.Tests/MongoDbUserSecurityStampStoreTests.cs
class MongoDbUserSecurityStampStoreTests (line 9) | public class MongoDbUserSecurityStampStoreTests : MongoDbIdentityStoreTe...
method MongoDbUserSecurityStampStoreTests (line 15) | public MongoDbUserSecurityStampStoreTests(MongoDbIdentityFixture mongo...
method CreateUser (line 21) | protected override MongoDbIdentityUser CreateUser()
method Can_get_security_stamp_async (line 28) | [Fact]
method Can_set_security_stamp_async (line 35) | [Fact]
FILE: test/Blueshift.Identity.MongoDB.Tests/MongoDbUserStoreTests.cs
class MongoDbUserStoreTests (line 9) | public class MongoDbUserStoreTests : MongoDbIdentityStoreTestBase
method MongoDbUserStoreTests (line 13) | public MongoDbUserStoreTests(MongoDbIdentityFixture mongoDbIdentityFix...
method Can_create_user_async (line 19) | [Fact]
method Can_delete_user_async (line 25) | [Fact]
method Can_find_by_id_async (line 32) | [Fact]
method Can_find_by_name_async (line 39) | [Fact]
method Can_get_normalized_user_name_async (line 46) | [Fact]
method Can_get_user_id_async (line 53) | [Fact]
method Can_get_user_name_async (line 60) | [Fact]
method Can_set_normalized_user_name_async (line 67) | [Fact]
method Can_set_user_name_async (line 76) | [Fact]
method Can_update_user_async (line 85) | [Fact]
FILE: test/Blueshift.Identity.MongoDB.Tests/MongoDbUserTwoFactorRecoveryCodeStoreTests.cs
class MongoDbUserTwoFactorRecoveryCodeStoreTests (line 10) | public class MongoDbUserTwoFactorRecoveryCodeStoreTests : MongoDbIdentit...
method MongoDbUserTwoFactorRecoveryCodeStoreTests (line 22) | public MongoDbUserTwoFactorRecoveryCodeStoreTests(MongoDbIdentityFixtu...
method CreateUser (line 28) | protected override MongoDbIdentityUser CreateUser()
method Can_redeem_codes_exactly_once_async (line 44) | [Theory]
method Can_replace_codes_async (line 55) | [Fact]
FILE: test/Blueshift.Identity.MongoDB.Tests/MongoDbUserTwoFactorStoreTests.cs
class MongoDbUserTwoFactorStoreTests (line 8) | public class MongoDbUserTwoFactorStoreTests : MongoDbIdentityStoreTestBase
method MongoDbUserTwoFactorStoreTests (line 12) | public MongoDbUserTwoFactorStoreTests(MongoDbIdentityFixture mongoDbId...
method Can_check_two_factor_enabled_async (line 18) | [Fact]
method Can_set_two_factor_enabled_async (line 28) | [Fact]
FILE: test/Blueshift.Identity.MongoDB.Tests/_Comparers.cs
class ClaimComparer (line 9) | public class ClaimComparer : EqualityComparer<Claim>
method Equals (line 11) | public override bool Equals(Claim claim1, Claim claim2)
method GetHashCode (line 16) | public override int GetHashCode(Claim obj)
class MongoDbIdentityRoleComparer (line 20) | public class MongoDbIdentityRoleComparer : EqualityComparer<MongoDbIdent...
method Equals (line 22) | public override bool Equals(MongoDbIdentityRole role1, MongoDbIdentity...
method GetHashCode (line 31) | public override int GetHashCode(MongoDbIdentityRole obj)
class MongoDbIdentityUserComparer (line 35) | public class MongoDbIdentityUserComparer : EqualityComparer<MongoDbIdent...
method Equals (line 37) | public override bool Equals(MongoDbIdentityUser user1, MongoDbIdentity...
method GetHashCode (line 49) | public override int GetHashCode(MongoDbIdentityUser obj)
class MongoDbIdentityUserLoginComparer (line 53) | public class MongoDbIdentityUserLoginComparer : EqualityComparer<MongoDb...
method Equals (line 55) | public override bool Equals(MongoDbIdentityUserLogin userLogin1, Mongo...
method GetHashCode (line 64) | public override int GetHashCode(MongoDbIdentityUserLogin obj)
class MongoDbIdentityUserTokenComparer (line 68) | public class MongoDbIdentityUserTokenComparer : EqualityComparer<MongoDb...
method Equals (line 70) | public override bool Equals(MongoDbIdentityUserToken userToken1, Mongo...
method GetHashCode (line 75) | public override int GetHashCode(MongoDbIdentityUserToken obj)
class MongoDbIdentityClaimComparer (line 79) | public class MongoDbIdentityClaimComparer : EqualityComparer<MongoDbIden...
method Equals (line 81) | public override bool Equals(MongoDbIdentityClaim claim1, MongoDbIdenti...
method GetHashCode (line 86) | public override int GetHashCode(MongoDbIdentityClaim obj)
Condensed preview — 200 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (759K chars).
[
{
"path": ".dockerignore",
"chars": 99,
"preview": ".dockerignore\n.env\n.git\n.gitignore\n.vs\n.vscode\ndocker-compose.yml\ndocker-compose.*.yml\n*/bin\n*/obj\n"
},
{
"path": ".gitattributes",
"chars": 29,
"preview": "* text=auto\n*.sh text eol=lf\n"
},
{
"path": ".gitignore",
"chars": 5014,
"preview": "/.build/\n/global.json\nQueryBaseline.cs\n\n## Ignore Visual Studio temporary files, build results, and\n## files generated b"
},
{
"path": ".travis.yml",
"chars": 399,
"preview": "language: csharp\nsudo: false\ndotnet: 2.1.2\ndist: trusty\nenv:\n global:\n - DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true\n "
},
{
"path": "Blueshift.EntityFrameworkCore.sln",
"chars": 6627,
"preview": "\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 15\nVisualStudioVersion = 15.0.27004.2010\nM"
},
{
"path": "Blueshift.EntityFrameworkCore.sln.DotSettings",
"chars": 403,
"preview": "<wpf:ResourceDictionary xml:space=\"preserve\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" xmlns:s=\"clr-namesp"
},
{
"path": "Directory.Build.props",
"chars": 1443,
"preview": "<Project>\n <Import Project=\"version.props\" />\n <Import Project=\"build/dependencies.props\" />\n <Import Project=\"build"
},
{
"path": "Directory.Build.targets",
"chars": 681,
"preview": "<Project>\n <PropertyGroup>\n <!-- Assign these values at the end of the project after TargetFramework has been assig"
},
{
"path": "LICENSE.txt",
"chars": 588,
"preview": "Copyright (c) 2017 Blueshift Software, LLC. All rights reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"L"
},
{
"path": "NuGet.config",
"chars": 197,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n <packageSources>\n <clear />\n <!-- Restore sources should"
},
{
"path": "README.md",
"chars": 1530,
"preview": "This repository has been defunct for some time. Due to a lack of both public interest and general support from the Micro"
},
{
"path": "appveyor.yml",
"chars": 736,
"preview": "init:\n - git config --global core.autocrlf true\nclone_depth: 1\ntest: off\nservices:\n - mongodb\nenvironment:\n global:\n "
},
{
"path": "build/dependencies.props",
"chars": 1551,
"preview": "<Project>\n\n <PropertyGroup>\n <MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjec"
},
{
"path": "build/repo.beforecommon.props",
"chars": 177,
"preview": "<Project>\n <PropertyGroup>\n <!-- for local builds, always use the time-based build number -->\n <IncrementalVersio"
},
{
"path": "build/repo.props",
"chars": 381,
"preview": "<Project>\n\n <PropertyGroup>\n <CoreOnly Condition=\"'$(CoreOnly)' == ''\">False</CoreOnly>\n\n <DisablePackageReferenc"
},
{
"path": "build/repo.targets",
"chars": 1003,
"preview": "<Project>\n <Target Name=\"_FilterTestProjects\" BeforeTargets=\"TestProjects\">\n <ItemGroup Condition=\"'$(TestFilter)' !"
},
{
"path": "build/sources.props",
"chars": 830,
"preview": "<Project>\n <Import Project=\"$(DotNetRestoreSourcePropsPath)\" Condition=\"'$(DotNetRestoreSourcePropsPath)' != ''\"/>\n\n <"
},
{
"path": "build.cmd",
"chars": 260,
"preview": "@ECHO OFF\nPowerShell -NoProfile -NoLogo -ExecutionPolicy unrestricted -Command \"[System.Threading.Thread]::CurrentThread"
},
{
"path": "build.sh",
"chars": 253,
"preview": "#!/usr/bin/env bash\n\nset -euo pipefail\nDIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" && pwd )\"\n\n# Call \"sync\" between \"c"
},
{
"path": "docker-compose.dcproj",
"chars": 558,
"preview": "<Project Sdk=\"Microsoft.Docker.Sdk\">\n <PropertyGroup Label=\"Globals\">\n <ProjectVersion>2.1</ProjectVersion>\n <Doc"
},
{
"path": "docker-compose.yml",
"chars": 284,
"preview": "version: '3.4'\n\nservices:\n mongo-efcore:\n image: mongo:4.1.2-xenial\n restart: always\n ports:\n - 27017:270"
},
{
"path": "korebuild-lock.txt",
"chars": 75,
"preview": "version:2.1.3-rtm-15802\ncommithash:a7c08b45b440a7d2058a0aa1eaa3eb6ba811976a"
},
{
"path": "korebuild.json",
"chars": 142,
"preview": "{\n \"$schema\": \"https://raw.githubusercontent.com/aspnet/BuildTools/release/2.1/tools/korebuild.schema.json\",\n \"cha"
},
{
"path": "run.cmd",
"chars": 246,
"preview": "@ECHO OFF\nPowerShell -NoProfile -NoLogo -ExecutionPolicy unrestricted -Command \"[System.Threading.Thread]::CurrentThread"
},
{
"path": "run.ps1",
"chars": 6587,
"preview": "#!/usr/bin/env powershell\n#requires -version 4\n\n<#\n.SYNOPSIS\nExecutes KoreBuild commands.\n.DESCRIPTION\nDownloads korebui"
},
{
"path": "run.sh",
"chars": 8333,
"preview": "#!/usr/bin/env bash\n\nset -euo pipefail\n\n#\n# variables\n#\n\nRESET=\"\\033[0m\"\nRED=\"\\033[0;31m\"\nYELLOW=\"\\033[0;33m\"\nMAGENTA=\"\\"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Conventions/AbstractBaseClassConvention.cs",
"chars": 1354,
"preview": "using Microsoft.EntityFrameworkCore.Utilities;\nusing MongoDB.Bson.Serialization;\nusing MongoDB.Bson.Serialization.Attri"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Conventions/BsonClassMapAttributeConvention.cs",
"chars": 2365,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Reflection;\nusing System.Text.RegularExpressions;\nusing Je"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Conventions/BsonMemberMapAttributeConvention.cs",
"chars": 2196,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Reflection;\nusing System.Text.RegularExpressions;\nusing Je"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Conventions/IgnoreEmptyEnumerablesConvention.cs",
"chars": 1639,
"preview": "using System;\nusing System.Collections;\nusing System.Text.RegularExpressions;\nusing JetBrains.Annotations;\nusing Micros"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Conventions/IgnoreNullOrEmptyStringsConvention.cs",
"chars": 2247,
"preview": "using System.Text.RegularExpressions;\nusing JetBrains.Annotations;\nusing Microsoft.EntityFrameworkCore.Utilities;\nusing"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Conventions/KeyAttributeConvention.cs",
"chars": 1076,
"preview": "using System.ComponentModel.DataAnnotations;\nusing Microsoft.EntityFrameworkCore.Utilities;\nusing MongoDB.Bson.Serializ"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Conventions/NavigationSrializationMemberMapConvention.cs",
"chars": 1999,
"preview": "using System;\nusing System.ComponentModel.DataAnnotations;\nusing System.Linq;\nusing System.Reflection;\nusing Blueshift."
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Conventions/NotMappedAttributeConvention.cs",
"chars": 1006,
"preview": "using System.ComponentModel.DataAnnotations.Schema;\nusing Microsoft.EntityFrameworkCore.Utilities;\nusing MongoDB.Bson.S"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/EntityFrameworkConventionPack.cs",
"chars": 1451,
"preview": "using System;\nusing Blueshift.EntityFrameworkCore.MongoDB.Adapter.Conventions;\nusing MongoDB.Bson.Serialization.Convent"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Serialization/BsonSerializerExtensions.cs",
"chars": 3017,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Reflection;\nusing JetBrains.Annotations;\nusing Microsoft.E"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Serialization/DenormalizingBsonClassMapSerializer.cs",
"chars": 4647,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing JetBrains.Annotations;\nusing MongoDB.Bson;\nusi"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Serialization/NavigationBsonMemberMapSerializer.cs",
"chars": 2771,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Reflection;\nusing Blueshift.EntityFrameworkCore.MongoDB.An"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Update/DeleteOneModelFactory.cs",
"chars": 1974,
"preview": "using JetBrains.Annotations;\nusing Microsoft.EntityFrameworkCore.Metadata;\nusing Microsoft.EntityFrameworkCore.Update;\n"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Update/IMongoDbWriteModelFactory.cs",
"chars": 926,
"preview": "using JetBrains.Annotations;\nusing Microsoft.EntityFrameworkCore.Update;\nusing MongoDB.Driver;\n\nnamespace Blueshift.Ent"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Update/IMongoDbWriteModelFactoryCache.cs",
"chars": 1545,
"preview": "using System;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Metadata;\nusing MongoDB.Driver;\n"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Update/IMongoDbWriteModelFactorySelector.cs",
"chars": 1136,
"preview": "using JetBrains.Annotations;\nusing Microsoft.EntityFrameworkCore.Update;\nusing MongoDB.Driver;\n\nnamespace Blueshift.Ent"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Update/InsertOneModelFactory.cs",
"chars": 2626,
"preview": "using JetBrains.Annotations;\nusing Microsoft.EntityFrameworkCore.ChangeTracking.Internal;\nusing Microsoft.EntityFramewo"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Update/MongoDbWriteModelFactory.cs",
"chars": 6150,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Linq.Expressions;\nusing System.Reflecti"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Update/MongoDbWriteModelFactoryCache.cs",
"chars": 3272,
"preview": "using System;\nusing System.Collections.Concurrent;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFramework"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Update/MongoDbWriteModelFactorySelector.cs",
"chars": 4161,
"preview": "using System;\nusing JetBrains.Annotations;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Met"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Adapter/Update/ReplaceOneModelFactory.cs",
"chars": 2413,
"preview": "using JetBrains.Annotations;\nusing Microsoft.EntityFrameworkCore.ChangeTracking.Internal;\nusing Microsoft.EntityFramewo"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Annotations/DenormalizeAttribute.cs",
"chars": 910,
"preview": "using System;\n\nnamespace Blueshift.EntityFrameworkCore.MongoDB.Annotations\n{\n /// <summary>\n /// Declares that a "
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Annotations/MongoCollectionAttribute.cs",
"chars": 1082,
"preview": "using System;\nusing JetBrains.Annotations;\nusing Microsoft.EntityFrameworkCore.Metadata.Internal;\nusing Microsoft.Entit"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Annotations/MongoDatabaseAttribute.cs",
"chars": 1076,
"preview": "using System;\nusing JetBrains.Annotations;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Met"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Blueshift.EntityFrameworkCore.MongoDB.csproj",
"chars": 2326,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n \n <PropertyGroup>\n <TargetFrameworks>$(BuildFrameworks)</TargetFrameworks>\n "
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/ChangeTracking/MongoDbInternalEntityEntryFactory.cs",
"chars": 2823,
"preview": "using System.Linq;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.ChangeTracking.Internal;\nus"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/DbContextOptionsExtensions.cs",
"chars": 2146,
"preview": "//using System;\n//using System.Collections.Generic;\n//using System.Linq;\n//using JetBrains.Annotations;\n//using Microso"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/DependencyInjection/MongoDbEfServiceCollectionExtensions.cs",
"chars": 1923,
"preview": "using System.ComponentModel;\nusing System.Reflection;\nusing Blueshift.EntityFrameworkCore.MongoDB.Adapter;\nusing Bluesh"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Infrastructure/EntityFrameworkMongoDbServicesBuilder.cs",
"chars": 6196,
"preview": "using System;\nusing System.Collections.Generic;\nusing Blueshift.EntityFrameworkCore.MongoDB.Adapter.Update;\nusing Blues"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Infrastructure/MongoDbContextOptionsBuilder.cs",
"chars": 2768,
"preview": "using JetBrains.Annotations;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Infrastructure;\nus"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Infrastructure/MongoDbContextOptionsBuilderExtensions.cs",
"chars": 6372,
"preview": "using System;\nusing JetBrains.Annotations;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Inf"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Infrastructure/MongoDbModelValidator.cs",
"chars": 8045,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing Blueshift.EntityFrameworkCore.MongoDB.Metadata"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Infrastructure/MongoDbOptionsExtension.cs",
"chars": 5630,
"preview": "using System.Linq;\nusing System.Text;\nusing Blueshift.EntityFrameworkCore.MongoDB.DependencyInjection;\nusing JetBrains.A"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/ListExtensions.cs",
"chars": 4434,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing JetBrains.Annotations;\nusing Microsoft.EntityF"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Builders/DocumentDbInternalMetadataBuilderExtensions.cs",
"chars": 3675,
"preview": "using JetBrains.Annotations;\nusing Microsoft.EntityFrameworkCore.Metadata;\nusing Microsoft.EntityFrameworkCore.Metadata"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Builders/DocumentEntityTypeBuilderExtensions.cs",
"chars": 1453,
"preview": "using JetBrains.Annotations;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Metadata;\nusing M"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Builders/DocumentInternalKeyBuilderExtensions.cs",
"chars": 1224,
"preview": "using JetBrains.Annotations;\nusing Microsoft.EntityFrameworkCore.Metadata.Internal;\nusing Microsoft.EntityFrameworkCore"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Builders/MongoDbConventionSetBuilder.cs",
"chars": 5340,
"preview": "using Blueshift.EntityFrameworkCore.MongoDB.Metadata.Conventions;\nusing JetBrains.Annotations;\nusing Microsoft.EntityFr"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Builders/MongoDbConventionSetBuilderDependencies.cs",
"chars": 3755,
"preview": "using Blueshift.EntityFrameworkCore.MongoDB.Storage;\nusing JetBrains.Annotations;\nusing Microsoft.EntityFrameworkCore;\n"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Builders/MongoDbEntityTypeBuilderExtensions.cs",
"chars": 5141,
"preview": "using JetBrains.Annotations;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Metadata;\nusing M"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Builders/MongoDbInternalMetadataBuilderExtensions.cs",
"chars": 4246,
"preview": "using JetBrains.Annotations;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Metadata;\nusing M"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Builders/MongoDbModelBuilderExtensions.cs",
"chars": 1041,
"preview": "using Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Utilities;\n\n// ReSharper disable once CheckNam"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Conventions/BsonDiscriminatorAttributeConvention.cs",
"chars": 1332,
"preview": "using Blueshift.EntityFrameworkCore.MongoDB.Metadata.Builders;\nusing Microsoft.EntityFrameworkCore.Metadata.Conventions"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Conventions/BsonIgnoreAttributeConvention.cs",
"chars": 1775,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Reflection;\nusing Microsoft.EntityFrame"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Conventions/BsonKnownTypesAttributeConvention.cs",
"chars": 2741,
"preview": "using System;\nusing System.Reflection;\nusing Blueshift.EntityFrameworkCore.MongoDB.Metadata.Builders;\nusing Microsoft.E"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Conventions/BsonRequiredAttributeConvention.cs",
"chars": 1400,
"preview": "using System.Reflection;\nusing Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal;\nusing Microsoft.EntityFrame"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Conventions/DocumentPropertyMappingValidationConvention.cs",
"chars": 6485,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Reflection;\nusing System.Text;\nusing Sy"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Conventions/MongoCollectionAttributeConvention.cs",
"chars": 1236,
"preview": "using Blueshift.EntityFrameworkCore.MongoDB.Annotations;\nusing Blueshift.EntityFrameworkCore.MongoDB.Metadata.Builders;"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Conventions/MongoDatabaseConvention.cs",
"chars": 2866,
"preview": "using System.Reflection;\nusing System.Text.RegularExpressions;\nusing Blueshift.EntityFrameworkCore.MongoDB.Annotations;"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Conventions/MongoDbDatabaseGeneratedAttributeConvention.cs",
"chars": 1054,
"preview": "using System.ComponentModel.DataAnnotations.Schema;\nusing System.Reflection;\nusing Blueshift.EntityFrameworkCore.MongoD"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Conventions/MongoDbKeyAttributeConvention.cs",
"chars": 2137,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.ComponentModel.DataAnnotations;\nusing System.Linq;\nusing S"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Conventions/MongoDbRelationshipDiscoveryConvention.cs",
"chars": 1153,
"preview": "using JetBrains.Annotations;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Diagnostics;\nusin"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/Conventions/OwnedDocumentConvention.cs",
"chars": 5742,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Reflection;\nusing Blueshift.EntityFrame"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/DocumentAnnotationNames.cs",
"chars": 1043,
"preview": "namespace Blueshift.EntityFrameworkCore.MongoDB.Metadata\n{\n /// <summary>\n /// This API supports the Entity F"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/DocumentAnnotations.cs",
"chars": 2972,
"preview": "using JetBrains.Annotations;\nusing Microsoft.EntityFrameworkCore.Infrastructure;\nusing Microsoft.EntityFrameworkCore.Me"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/DocumentEntityTypeAnnotations.cs",
"chars": 1384,
"preview": "using JetBrains.Annotations;\nusing Microsoft.EntityFrameworkCore.Metadata;\nusing Microsoft.EntityFrameworkCore.Utilitie"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/DocumentKeyAnnotations.cs",
"chars": 1276,
"preview": "using JetBrains.Annotations;\nusing Microsoft.EntityFrameworkCore.Metadata;\n\nnamespace Blueshift.EntityFrameworkCore.Mon"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/MongoDbAnnotationNames.cs",
"chars": 3639,
"preview": "namespace Blueshift.EntityFrameworkCore.MongoDB.Metadata\n{\n /// <summary>\n /// This API supports the Entity F"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/MongoDbEntityTypeAnnotations.cs",
"chars": 4346,
"preview": "using JetBrains.Annotations;\nusing Microsoft.EntityFrameworkCore.Metadata;\nusing Microsoft.EntityFrameworkCore.Utilitie"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Metadata/MongoDbModelAnnotations.cs",
"chars": 1996,
"preview": "using JetBrains.Annotations;\nusing Microsoft.EntityFrameworkCore.Metadata;\nusing Microsoft.EntityFrameworkCore.Utilitie"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/MethodHelper.cs",
"chars": 4054,
"preview": "using System;\nusing System.Linq.Expressions;\nusing System.Reflection;\nusing Microsoft.EntityFrameworkCore.Utilities;\n\nn"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/MongoDbUtilities.cs",
"chars": 3504,
"preview": "using System;\nusing System.Text.RegularExpressions;\nusing Blueshift.EntityFrameworkCore.MongoDB.Metadata.Builders;\nusin"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/ObjectIdTypeConverter.cs",
"chars": 3798,
"preview": "using System;\nusing System.ComponentModel;\nusing System.Globalization;\nusing Microsoft.EntityFrameworkCore.Utilities;\nu"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Properties/AssemblyInfo.cs",
"chars": 324,
"preview": "// Copyright (c) Blueshift Software, LLC. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See L"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Properties/Blueshift.EntityFrameworkCore.MongoDB.rd.xml",
"chars": 309,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<Directives xmlns=\"http://schemas.microsoft.com/netfx/2013/01/metadata\">\n <Lib"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Properties/DocumentDbStrings.Designer.cs",
"chars": 3320,
"preview": "// <auto-generated />\n\nusing System.Reflection;\nusing System.Resources;\nusing JetBrains.Annotations;\n\nnamespace Microso"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Properties/DocumentDbStrings.cs",
"chars": 1,
"preview": ""
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Properties/DocumentDbStrings.resx",
"chars": 6795,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Properties/DocumentDbStrings.tt",
"chars": 101,
"preview": "<#\n Session[\"ResourceFile\"] = \"DocumentDbStrings.resx\";\n Session[\"NoDiagnostics\"] = true;\n#>\n"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Query/EntityLoadInfoFactory.cs",
"chars": 2330,
"preview": "using JetBrains.Annotations;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Internal;\nusing M"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Query/ExpressionVisitors/DocumentNavigationRewritingExpressionVisitor.cs",
"chars": 73872,
"preview": "using System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\n"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Query/ExpressionVisitors/DocumentNavigationRewritingExpressionVisitorFactory.cs",
"chars": 565,
"preview": "using Microsoft.EntityFrameworkCore.Query;\nusing Microsoft.EntityFrameworkCore.Query.ExpressionVisitors.Internal;\n\nname"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Query/ExpressionVisitors/IMongoDbDenormalizedCollectionCompensatingVisitorFactory.cs",
"chars": 710,
"preview": "namespace Blueshift.EntityFrameworkCore.MongoDB.Query.ExpressionVisitors\n{\n /// <summary>\n /// This API suppo"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Query/ExpressionVisitors/MongoDbDenormalizedCollectionCompensatingVisitor.cs",
"chars": 4235,
"preview": "using System.Collections;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Linq.Expressions;\nusing Sys"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Query/ExpressionVisitors/MongoDbDenormalizedCollectionCompensatingVisitorFactory.cs",
"chars": 415,
"preview": "namespace Blueshift.EntityFrameworkCore.MongoDB.Query.ExpressionVisitors\n{\n /// <inheritdoc />\n public class Mong"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Query/ExpressionVisitors/MongoDbEntityQueryableExpressionVisitor.cs",
"chars": 2691,
"preview": "using System;\nusing System.Linq;\nusing System.Linq.Expressions;\nusing System.Reflection;\nusing Blueshift.EntityFramework"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Query/ExpressionVisitors/MongoDbEntityQueryableExpressionVisitorFactory.cs",
"chars": 2224,
"preview": "using System.Linq.Expressions;\nusing Blueshift.EntityFrameworkCore.MongoDB.Query.Expressions;\nusing JetBrains.Annotatio"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Query/ExpressionVisitors/MongoDbMemberAccessBindingExpressionVisitor.cs",
"chars": 3820,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Linq.Expressions;\nusing System.Reflecti"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Query/ExpressionVisitors/MongoDbMemberAccessBindingExpressionVisitorFactory.cs",
"chars": 1123,
"preview": "using System;\nusing System.Linq.Expressions;\nusing Microsoft.EntityFrameworkCore.Query;\nusing Microsoft.EntityFramework"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Query/Expressions/DocumentQueryExpression.cs",
"chars": 2106,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Linq.Expressions;\nusing JetBrains.Annot"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Query/Expressions/IDocumentQueryExpressionFactory.cs",
"chars": 807,
"preview": "using System.Linq.Expressions;\nusing Microsoft.EntityFrameworkCore.Metadata;\n\nnamespace Blueshift.EntityFrameworkCore.M"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Query/Expressions/MongoDbDocumentQueryExpressionFactory.cs",
"chars": 3422,
"preview": "using System.Linq;\nusing System.Linq.Expressions;\nusing System.Reflection;\nusing Blueshift.EntityFrameworkCore.MongoDB."
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Query/IEntityLoadInfoFactory.cs",
"chars": 1346,
"preview": "using JetBrains.Annotations;\nusing Microsoft.EntityFrameworkCore.Metadata;\nusing Microsoft.EntityFrameworkCore.Query;\n\n"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Query/IValueBufferFactory.cs",
"chars": 1311,
"preview": "using JetBrains.Annotations;\nusing Microsoft.EntityFrameworkCore.Metadata;\nusing Microsoft.EntityFrameworkCore.Storage;"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Query/LinqQueryCompilationContextFactory.cs",
"chars": 753,
"preview": "using JetBrains.Annotations;\nusing Microsoft.EntityFrameworkCore.Query;\nusing Microsoft.EntityFrameworkCore.Query.Inter"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Query/MongoDbEntityQueryModelVisitor.cs",
"chars": 4683,
"preview": "using System;\nusing System.Linq;\nusing System.Linq.Expressions;\nusing System.Reflection;\nusing Blueshift.EntityFramework"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Query/MongoDbEntityQueryModelVisitorDependencies.cs",
"chars": 3530,
"preview": "using Blueshift.EntityFrameworkCore.MongoDB.Query.ExpressionVisitors;\nusing JetBrains.Annotations;\nusing Microsoft.Enti"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Query/MongoDbEntityQueryModelVisitorFactory.cs",
"chars": 1524,
"preview": "using JetBrains.Annotations;\nusing Microsoft.EntityFrameworkCore.Query;\nusing Microsoft.EntityFrameworkCore.Utilities;\n"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Query/MongoDbQueryBuffer.cs",
"chars": 6112,
"preview": "using System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Linq;\nusing JetBrains.Annotation"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Query/MongoDbQueryContext.cs",
"chars": 949,
"preview": "using System;\nusing JetBrains.Annotations;\nusing Microsoft.EntityFrameworkCore.Query;\nusing Microsoft.EntityFrameworkCo"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Query/MongoDbQueryContextFactory.cs",
"chars": 1240,
"preview": "using JetBrains.Annotations;\nusing Microsoft.EntityFrameworkCore.Query;\nusing Microsoft.EntityFrameworkCore.Query.Inter"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Query/QueryableLinqOperatorProvider.cs",
"chars": 9292,
"preview": "using System;\nusing System.Linq;\nusing System.Reflection;\nusing Microsoft.EntityFrameworkCore.Query.Internal;\n\nnamespac"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Query/ValueBufferFactory.cs",
"chars": 3789,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing Microsoft.EntityFram"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Storage/IMongoDbConnection.cs",
"chars": 2423,
"preview": "using System.Threading;\nusing System.Threading.Tasks;\nusing MongoDB.Driver;\nusing MongoDB.Driver.Linq;\n\nnamespace Blues"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Storage/IMongoDbTypeMappingSource.cs",
"chars": 210,
"preview": "using Microsoft.EntityFrameworkCore.Storage;\n\nnamespace Blueshift.EntityFrameworkCore.MongoDB.Storage\n{\n /// <inheri"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Storage/MongoDbConnection.cs",
"chars": 2668,
"preview": "using System.Threading;\nusing System.Threading.Tasks;\nusing Blueshift.EntityFrameworkCore.MongoDB.Metadata;\nusing Blues"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Storage/MongoDbDatabase.cs",
"chars": 8027,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Reflection;\nusing System.Threading;\nusin"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Storage/MongoDbDatabaseCreator.cs",
"chars": 3546,
"preview": "using System.Threading;\nusing System.Threading.Tasks;\nusing JetBrains.Annotations;\nusing Microsoft.EntityFrameworkCore.S"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/Storage/MongoDbTypeMappingSource.cs",
"chars": 2625,
"preview": "using System;\nusing System.Collections.Concurrent;\nusing System.Collections.Generic;\nusing System.Reflection;\nusing Jet"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/ValueGeneration/HashCodeValueGenerator.cs",
"chars": 1065,
"preview": "using Microsoft.EntityFrameworkCore.ChangeTracking;\nusing Microsoft.EntityFrameworkCore.ValueGeneration;\nusing MongoDB."
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/ValueGeneration/IntegerValueGenerator.cs",
"chars": 1324,
"preview": "using System;\nusing System.Globalization;\nusing System.Threading;\nusing Microsoft.EntityFrameworkCore.ChangeTracking;\nu"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/ValueGeneration/MongoDbValueGeneratorSelector.cs",
"chars": 2941,
"preview": "using System;\nusing System.Collections.Generic;\nusing JetBrains.Annotations;\nusing Microsoft.EntityFrameworkCore.Metada"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB/ValueGeneration/ObjectIdValueGenerator.cs",
"chars": 1136,
"preview": "using Microsoft.EntityFrameworkCore.ChangeTracking;\nusing Microsoft.EntityFrameworkCore.ValueGeneration;\nusing MongoDB."
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB.SampleDomain/Blueshift.EntityFrameworkCore.MongoDB.SampleDomain.csproj",
"chars": 592,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n <PropertyGroup>\n <TargetFrameworks>$(BuildFrameworks)</TargetFrameworks>\n <P"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB.SampleDomain/ZooDbContext.cs",
"chars": 5626,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.ComponentModel.DataAnnotations;\nusing System.ComponentMode"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB.SampleDomain/ZooDbDependencyInjection.cs",
"chars": 491,
"preview": "using Blueshift.EntityFrameworkCore.MongoDB.Infrastructure;\nusing Microsoft.Extensions.DependencyInjection;\n\nnamespace "
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB.SampleDomain/ZooEntityFixture.cs",
"chars": 9477,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing Blueshift.EntityFrameworkCore.MongoDB.Adapter;"
},
{
"path": "src/Blueshift.EntityFrameworkCore.MongoDB.SampleDomain/_Comparers.cs",
"chars": 7862,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\n\nnamespace Blueshift.EntityFrameworkCore.MongoDB.Sam"
},
{
"path": "src/Blueshift.Identity.MongoDB/Blueshift.Identity.MongoDB.csproj",
"chars": 1483,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n <PropertyGroup>\n <TargetFrameworks>$(BuildFrameworks)</TargetFrameworks>\n <P"
},
{
"path": "src/Blueshift.Identity.MongoDB/DependencyInjection/IdentityEntityFrameworkMongoDbBuilderExtensions.cs",
"chars": 6747,
"preview": "using System;\nusing System.Reflection;\nusing Blueshift.Identity.MongoDB;\nusing Microsoft.AspNetCore.Identity;\nusing Mic"
},
{
"path": "src/Blueshift.Identity.MongoDB/IdentityMongoDbContext.cs",
"chars": 9484,
"preview": "using System;\nusing Blueshift.EntityFrameworkCore.MongoDB.Annotations;\nusing Microsoft.EntityFrameworkCore;\nusing Mongo"
},
{
"path": "src/Blueshift.Identity.MongoDB/MongoDbIdentityClaim.cs",
"chars": 1962,
"preview": "using System.Security.Claims;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Utilities;\n\nname"
},
{
"path": "src/Blueshift.Identity.MongoDB/MongoDbIdentityRole.cs",
"chars": 3318,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.ComponentModel.DataAnnotations;\nusing System.ComponentMode"
},
{
"path": "src/Blueshift.Identity.MongoDB/MongoDbIdentityUser.cs",
"chars": 7804,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.ComponentModel.DataAnnotations;\nusing System.ComponentMode"
},
{
"path": "src/Blueshift.Identity.MongoDB/MongoDbIdentityUserLogin.cs",
"chars": 3871,
"preview": "using System.Collections.Generic;\nusing JetBrains.Annotations;\nusing Microsoft.AspNetCore.Identity;\nusing Microsoft.Ent"
},
{
"path": "src/Blueshift.Identity.MongoDB/MongoDbIdentityUserRole.cs",
"chars": 631,
"preview": "using Microsoft.EntityFrameworkCore;\n\nnamespace Blueshift.Identity.MongoDB\n{\n /// <summary>\n /// A representation"
},
{
"path": "src/Blueshift.Identity.MongoDB/MongoDbIdentityUserToken.cs",
"chars": 577,
"preview": "using Microsoft.EntityFrameworkCore;\n\nnamespace Blueshift.Identity.MongoDB\n{\n /// <summary>\n /// A representation"
},
{
"path": "src/Blueshift.Identity.MongoDB/MongoDbRoleStore.cs",
"chars": 20967,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Linq;\nusing System.Security.C"
},
{
"path": "src/Blueshift.Identity.MongoDB/MongoDbUserStore.cs",
"chars": 79602,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Linq;\nusing System.Security.C"
},
{
"path": "src/Directory.Build.props",
"chars": 585,
"preview": "<Project>\n <Import Project=\"..\\Directory.Build.props\" />\n\n <PropertyGroup>\n <DeveloperBuildFrameworks>netstandard2."
},
{
"path": "src/Shared/Check.cs",
"chars": 4807,
"preview": "// Copyright (c) .NET Foundation. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See License.tx"
},
{
"path": "src/Shared/CodeAnnotations.cs",
"chars": 3350,
"preview": "// Copyright (c) .NET Foundation. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See License.tx"
},
{
"path": "src/Shared/MemberInfoExtensions.cs",
"chars": 425,
"preview": "// Copyright (c) .NET Foundation. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See License.tx"
},
{
"path": "src/Shared/PropertyInfoExtensions.cs",
"chars": 2275,
"preview": "// Copyright (c) .NET Foundation. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See License.tx"
},
{
"path": "src/Shared/SharedTypeExtensions.cs",
"chars": 11142,
"preview": "using System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Reflection;\n\n// ReSharper di"
},
{
"path": "src/Shared/StringBuilderExtensions.cs",
"chars": 2790,
"preview": "// Copyright (c) .NET Foundation. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See License.tx"
},
{
"path": "test/Blueshift.EntityFrameworkCore.MongoDB.Tests/Adapter/Conventions/AbstractClassConventionTest.cs",
"chars": 1031,
"preview": "using System;\nusing System.Reflection;\nusing Blueshift.EntityFrameworkCore.MongoDB.Adapter.Conventions;\nusing Blueshift"
},
{
"path": "test/Blueshift.EntityFrameworkCore.MongoDB.Tests/Adapter/Conventions/IgnoreEmptyEnumerablesConventionTests.cs",
"chars": 1785,
"preview": "using Blueshift.EntityFrameworkCore.MongoDB.Adapter.Conventions;\nusing Blueshift.EntityFrameworkCore.MongoDB.SampleDoma"
},
{
"path": "test/Blueshift.EntityFrameworkCore.MongoDB.Tests/Adapter/Conventions/IgnoreNullOrEmptyStringsConventionTests.cs",
"chars": 1080,
"preview": "using Blueshift.EntityFrameworkCore.MongoDB.Adapter.Conventions;\nusing Blueshift.EntityFrameworkCore.MongoDB.SampleDoma"
},
{
"path": "test/Blueshift.EntityFrameworkCore.MongoDB.Tests/Adapter/Conventions/KeyAttributeConventionTests.cs",
"chars": 1885,
"preview": "using System;\nusing System.ComponentModel.DataAnnotations;\nusing System.Reflection;\nusing Blueshift.EntityFrameworkCore"
},
{
"path": "test/Blueshift.EntityFrameworkCore.MongoDB.Tests/Adapter/EntityFrameworkConventionPackTests.cs",
"chars": 885,
"preview": "using System;\nusing System.Reflection;\nusing Blueshift.EntityFrameworkCore.MongoDB.Adapter;\nusing Blueshift.EntityFrame"
},
{
"path": "test/Blueshift.EntityFrameworkCore.MongoDB.Tests/Adapter/Serialization/BsonSerializerExtensionsTests.cs",
"chars": 10241,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing Blueshif"
},
{
"path": "test/Blueshift.EntityFrameworkCore.MongoDB.Tests/Adapter/Serialization/DenormalizingBsonClassMapSerializerTests.cs",
"chars": 4843,
"preview": "using Blueshift.EntityFrameworkCore.MongoDB.Adapter.Serialization;\nusing Blueshift.EntityFrameworkCore.MongoDB.SampleDo"
},
{
"path": "test/Blueshift.EntityFrameworkCore.MongoDB.Tests/Adapter/Update/MongoDbWriteModelFactoryTests.cs",
"chars": 6520,
"preview": "using System;\nusing Blueshift.EntityFrameworkCore.MongoDB.Adapter.Update;\nusing Blueshift.EntityFrameworkCore.MongoDB.S"
},
{
"path": "test/Blueshift.EntityFrameworkCore.MongoDB.Tests/ApiConsistencyTest.cs",
"chars": 366,
"preview": "//using System.Reflection;\n//using Microsoft.EntityFrameworkCore.Storage;\n//using Microsoft.EntityFrameworkCore.Tests;\n\n"
},
{
"path": "test/Blueshift.EntityFrameworkCore.MongoDB.Tests/Blueshift.EntityFrameworkCore.MongoDB.Tests.csproj",
"chars": 1278,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n <PropertyGroup>\n <TargetFrameworks>$(TestFrameworks)</TargetFrameworks>\n <Te"
},
{
"path": "test/Blueshift.EntityFrameworkCore.MongoDB.Tests/Metadata/Conventions/MongoDatabaseConventionTests.cs",
"chars": 2284,
"preview": "using System;\nusing Blueshift.EntityFrameworkCore.MongoDB.Annotations;\nusing Blueshift.EntityFrameworkCore.MongoDB.Infr"
},
{
"path": "test/Blueshift.EntityFrameworkCore.MongoDB.Tests/Metadata/MongoDbEntityTypeAnnotationsTests.cs",
"chars": 2284,
"preview": "using Blueshift.EntityFrameworkCore.MongoDB.Metadata;\nusing Blueshift.EntityFrameworkCore.MongoDB.SampleDomain;\nusing M"
},
{
"path": "test/Blueshift.EntityFrameworkCore.MongoDB.Tests/Metadata/MongoDbModelAnnotationsTests.cs",
"chars": 752,
"preview": "using Blueshift.EntityFrameworkCore.MongoDB.Metadata;\nusing Microsoft.EntityFrameworkCore.Metadata.Internal;\nusing Xuni"
},
{
"path": "test/Blueshift.EntityFrameworkCore.MongoDB.Tests/MongoDbContextTestBase.cs",
"chars": 2120,
"preview": "using System;\nusing System.Threading.Tasks;\nusing Blueshift.EntityFrameworkCore.MongoDB.Infrastructure;\nusing Blueshift"
},
{
"path": "test/Blueshift.EntityFrameworkCore.MongoDB.Tests/MongoDbContextTests.cs",
"chars": 27508,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Blueshift.Entity"
},
{
"path": "test/Blueshift.EntityFrameworkCore.MongoDB.Tests/MongoDbUtilitiesTests.cs",
"chars": 3684,
"preview": "using System;\nusing Blueshift.EntityFrameworkCore.MongoDB.SampleDomain;\nusing Microsoft.EntityFrameworkCore;\nusing Micr"
},
{
"path": "test/Blueshift.EntityFrameworkCore.MongoDB.Tests/Properties/AssemblyInfo.cs",
"chars": 516,
"preview": "// Copyright (c) Blueshift Software, LLC. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See L"
},
{
"path": "test/Blueshift.EntityFrameworkCore.MongoDB.Tests/Storage/MongoDbConnectionTests.cs",
"chars": 6227,
"preview": "using System.Threading;\nusing System.Threading.Tasks;\nusing Blueshift.EntityFrameworkCore.MongoDB.Metadata.Builders;\nus"
},
{
"path": "test/Blueshift.EntityFrameworkCore.MongoDB.Tests/Storage/MongoDbDatabaseCreatorTests.cs",
"chars": 3136,
"preview": "using System.Threading;\nusing System.Threading.Tasks;\nusing Blueshift.EntityFrameworkCore.MongoDB.Storage;\nusing MongoD"
},
{
"path": "test/Blueshift.EntityFrameworkCore.MongoDB.Tests/Storage/MongoDbDatabaseTests.cs",
"chars": 5920,
"preview": "using System.Collections.Generic;\nusing System.Linq;\nusing System.Reflection;\nusing System.Threading;\nusing Blueshift.E"
},
{
"path": "test/Blueshift.EntityFrameworkCore.MongoDB.Tests/Storage/MongoDbTypeMappingSourceTests.cs",
"chars": 3325,
"preview": "using System;\nusing System.Collections.Generic;\nusing Blueshift.EntityFrameworkCore.MongoDB.SampleDomain;\nusing Blueshi"
},
{
"path": "test/Blueshift.EntityFrameworkCore.MongoDB.Tests/ValueGeneration/MongoDbValueGeneratorSelectorTests.cs",
"chars": 1338,
"preview": "using System.Reflection;\nusing Blueshift.EntityFrameworkCore.MongoDB.SampleDomain;\nusing Blueshift.EntityFrameworkCore."
},
{
"path": "test/Blueshift.EntityFrameworkCore.MongoDB.Tests/ValueGeneration/ObjectIdValueGeneratorTests.cs",
"chars": 1073,
"preview": "using Blueshift.EntityFrameworkCore.MongoDB.ValueGeneration;\nusing MongoDB.Bson;\nusing Xunit;\n\nnamespace Blueshift.Enti"
},
{
"path": "test/Blueshift.EntityFrameworkCore.MongoDB.Tests/xunit.runner.json",
"chars": 67,
"preview": "{\n \"longRunningTestSeconds\": 30,\n \"parallelizeAssembly\": false\n}"
},
{
"path": "test/Blueshift.Identity.MongoDB.Tests/Blueshift.Identity.MongoDB.Tests.csproj",
"chars": 833,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n <PropertyGroup>\n <TargetFrameworks>$(TestFrameworks)</TargetFrameworks>\n <Te"
},
{
"path": "test/Blueshift.Identity.MongoDB.Tests/MongoDbIdentityFixture.cs",
"chars": 1915,
"preview": "using System;\nusing Blueshift.EntityFrameworkCore.MongoDB.Infrastructure;\nusing Microsoft.Extensions.DependencyInjectio"
},
{
"path": "test/Blueshift.Identity.MongoDB.Tests/MongoDbIdentityTestBase.cs",
"chars": 2019,
"preview": "using System.Threading;\nusing System.Threading.Tasks;\nusing Microsoft.AspNetCore.Identity;\nusing Xunit;\n\nnamespace Blue"
},
{
"path": "test/Blueshift.Identity.MongoDB.Tests/MongoDbIdentityTestCollection.cs",
"chars": 219,
"preview": "using Xunit;\n\nnamespace Blueshift.Identity.MongoDB.Tests\n{\n [CollectionDefinition(\"MongoDB.Identity.Tests\")]\n pub"
},
{
"path": "test/Blueshift.Identity.MongoDB.Tests/MongoDbRoleClaimStoreTests.cs",
"chars": 2484,
"preview": "using System.Linq;\nusing System.Security.Claims;\nusing System.Threading.Tasks;\nusing Microsoft.AspNetCore.Identity;\nusi"
},
{
"path": "test/Blueshift.Identity.MongoDB.Tests/MongoDbRoleStoreTests.cs",
"chars": 3846,
"preview": "using System;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing Microsoft.AspNetCore.Identity;\nusing Xunit;\n\nn"
},
{
"path": "test/Blueshift.Identity.MongoDB.Tests/MongoDbUserAuthenticationTokenStoreTests.cs",
"chars": 3562,
"preview": "using System;\nusing System.Linq;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing Microsoft.AspNetCore.Ident"
},
{
"path": "test/Blueshift.Identity.MongoDB.Tests/MongoDbUserAuthenticatorKeyStoreTests.cs",
"chars": 2275,
"preview": "using System;\nusing System.Linq;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing Microsoft.AspNetCore.Ident"
},
{
"path": "test/Blueshift.Identity.MongoDB.Tests/MongoDbUserClaimStoreTests.cs",
"chars": 3548,
"preview": "using System.Linq;\nusing System.Security.Claims;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing Microsoft."
},
{
"path": "test/Blueshift.Identity.MongoDB.Tests/MongoDbUserEmailStoreTests.cs",
"chars": 3634,
"preview": "using System;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing Microsoft.AspNetCore.Identity;\nusing Xunit;\n\n"
},
{
"path": "test/Blueshift.Identity.MongoDB.Tests/MongoDbUserLockoutStoreTests.cs",
"chars": 2996,
"preview": "using System;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing Microsoft.AspNetCore.Identity;\nusing Xunit;\n\n"
},
{
"path": "test/Blueshift.Identity.MongoDB.Tests/MongoDbUserLoginStoreTests.cs",
"chars": 2987,
"preview": "using System;\nusing System.Linq;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing Microsoft.AspNetCore.Ident"
},
{
"path": "test/Blueshift.Identity.MongoDB.Tests/MongoDbUserPasswordStoreTests.cs",
"chars": 1927,
"preview": "using System;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing Microsoft.AspNetCore.Identity;\nusing Xunit;\n\n"
},
{
"path": "test/Blueshift.Identity.MongoDB.Tests/MongoDbUserPhoneNumberStoreTests.cs",
"chars": 2525,
"preview": "using System;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing Microsoft.AspNetCore.Identity;\nusing Xunit;\n\n"
},
{
"path": "test/Blueshift.Identity.MongoDB.Tests/MongoDbUserRoleStoreTests.cs",
"chars": 3543,
"preview": "using System;\nusing System.Linq;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing Microsoft.AspNetCore.Ident"
},
{
"path": "test/Blueshift.Identity.MongoDB.Tests/MongoDbUserSecurityStampStoreTests.cs",
"chars": 1613,
"preview": "using System;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing Microsoft.AspNetCore.Identity;\nusing Xunit;\n\n"
},
{
"path": "test/Blueshift.Identity.MongoDB.Tests/MongoDbUserStoreTests.cs",
"chars": 3846,
"preview": "using System;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing Microsoft.AspNetCore.Identity;\nusing Xunit;\n\nn"
},
{
"path": "test/Blueshift.Identity.MongoDB.Tests/MongoDbUserTwoFactorRecoveryCodeStoreTests.cs",
"chars": 3163,
"preview": "using System;\nusing System.Linq;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing Microsoft.AspNetCore.Ident"
},
{
"path": "test/Blueshift.Identity.MongoDB.Tests/MongoDbUserTwoFactorStoreTests.cs",
"chars": 1514,
"preview": "using System.Threading;\nusing System.Threading.Tasks;\nusing Microsoft.AspNetCore.Identity;\nusing Xunit;\n\nnamespace Blue"
},
{
"path": "test/Blueshift.Identity.MongoDB.Tests/Properties/AssemblyInfo.cs",
"chars": 515,
"preview": "// Copyright (c) Blueshift Software, LLC. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See L"
},
{
"path": "test/Blueshift.Identity.MongoDB.Tests/_Comparers.cs",
"chars": 5085,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Security.Claims;\nusing Blueshift.Identi"
},
{
"path": "test/Blueshift.Identity.MongoDB.Tests/xunit.runner.json",
"chars": 67,
"preview": "{\n \"longRunningTestSeconds\": 30,\n \"parallelizeAssembly\": false\n}"
},
{
"path": "test/Directory.Build.props",
"chars": 1055,
"preview": "<Project>\n <Import Project=\"..\\Directory.Build.props\" />\n\n <PropertyGroup>\n <DeveloperTestFrameworks>netcoreapp2.1<"
},
{
"path": "version.props",
"chars": 604,
"preview": "<!-- This file may be overwritten by automation. -->\n<Project>\n <PropertyGroup>\n <VersionPrefix>2.1.0</VersionPrefix"
}
]
About this extraction
This page contains the full source code of the BlueshiftSoftware/EntityFrameworkCore GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 200 files (700.6 KB), approximately 149.1k tokens, and a symbol index with 965 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.