Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
N
netcoreplus
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
tsai
netcoreplus
Commits
86f50128
Commit
86f50128
authored
May 19, 2019
by
阿星Plus
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
MongoDb
parent
4fbb11cb
Changes
9
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
252 additions
and
2 deletions
+252
-2
Plus.sln
Plus.sln
+1
-1
IMongoDbModuleConfiguration.cs
...Plus.MongoDB/Configuration/IMongoDbModuleConfiguration.cs
+12
-0
MongoDbModuleConfiguration.cs
src/Plus.MongoDB/Configuration/MongoDbModuleConfiguration.cs
+12
-0
IMongoDatabaseProvider.cs
src/Plus.MongoDB/IMongoDatabaseProvider.cs
+15
-0
Plus.MongoDB.csproj
src/Plus.MongoDB/Plus.MongoDB.csproj
+9
-1
PlusMongoDbModule.cs
src/Plus.MongoDB/PlusMongoDbModule.cs
+23
-0
MongoDbRepositoryBase.cs
src/Plus.MongoDB/Repositories/MongoDbRepositoryBase.cs
+96
-0
MongoDbUnitOfWork.cs
src/Plus.MongoDB/Uow/MongoDbUnitOfWork.cs
+57
-0
UnitOfWorkMongoDatabaseProvider.cs
src/Plus.MongoDB/Uow/UnitOfWorkMongoDatabaseProvider.cs
+27
-0
No files found.
Plus.sln
View file @
86f50128
...
@@ -25,7 +25,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Plus.Extensions", "src\Plus
...
@@ -25,7 +25,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Plus.Extensions", "src\Plus
EndProject
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Plus.Log4Net", "src\Plus.Log4Net\Plus.Log4Net.csproj", "{F4631747-89D2-4EA8-8684-9217D463D4C6}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Plus.Log4Net", "src\Plus.Log4Net\Plus.Log4Net.csproj", "{F4631747-89D2-4EA8-8684-9217D463D4C6}"
EndProject
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Plus.MongoD
B", "src\Plus.MongoDB\Plus.MongoDB
.csproj", "{289760B5-2E69-4D9F-8F1F-2D80EA1FC36D}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Plus.MongoD
b", "src\Plus.MongoDB\Plus.MongoDb
.csproj", "{289760B5-2E69-4D9F-8F1F-2D80EA1FC36D}"
EndProject
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Plus.RedisCache", "src\Plus.RedisCache\Plus.RedisCache.csproj", "{BBCB7D18-8BA5-461A-B3B2-3E9A79EDA6FB}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Plus.RedisCache", "src\Plus.RedisCache\Plus.RedisCache.csproj", "{BBCB7D18-8BA5-461A-B3B2-3E9A79EDA6FB}"
EndProject
EndProject
...
...
src/Plus.MongoDB/Configuration/IMongoDbModuleConfiguration.cs
0 → 100644
View file @
86f50128
namespace
Plus.MongoDb.Configuration
{
/// <summary>
/// IMongoDbModuleConfiguration
/// </summary>
public
interface
IMongoDbModuleConfiguration
{
string
ConnectionString
{
get
;
set
;
}
string
DatabaseName
{
get
;
set
;
}
}
}
\ No newline at end of file
src/Plus.MongoDB/Configuration/MongoDbModuleConfiguration.cs
0 → 100644
View file @
86f50128
namespace
Plus.MongoDb.Configuration
{
/// <summary>
/// MongoDbModuleConfiguration
/// </summary>
internal
class
MongoDbModuleConfiguration
:
IMongoDbModuleConfiguration
{
public
string
ConnectionString
{
get
;
set
;
}
public
string
DatabaseName
{
get
;
set
;
}
}
}
\ No newline at end of file
src/Plus.MongoDB/IMongoDatabaseProvider.cs
0 → 100644
View file @
86f50128
using
MongoDB.Driver
;
namespace
Plus.MongoDb
{
/// <summary>
/// Defines interface to obtain a <see cref="MongoDatabase"/> object.
/// </summary>
public
interface
IMongoDatabaseProvider
{
/// <summary>
/// Gets the <see cref="MongoDatabase"/>.
/// </summary>
MongoDatabase
Database
{
get
;
}
}
}
\ No newline at end of file
src/Plus.MongoDB/Plus.MongoDB.csproj
View file @
86f50128
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="mongocsharpdriver" Version="2.8.1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Plus\Plus.csproj" />
</ItemGroup>
</Project>
</Project>
src/Plus.MongoDB/PlusMongoDbModule.cs
0 → 100644
View file @
86f50128
using
Plus.Modules
;
using
Plus.MongoDb.Configuration
;
using
System.Reflection
;
namespace
Plus.MongoDb
{
/// <summary>
/// MongoDB 数据访问层
/// </summary>
[
DependsOn
(
typeof
(
PlusLeadershipModule
))]
public
class
PlusMongoDbModule
:
PlusModule
{
public
override
void
PreInitialize
()
{
IocManager
.
Register
<
IMongoDbModuleConfiguration
,
MongoDbModuleConfiguration
>();
}
public
override
void
Initialize
()
{
IocManager
.
RegisterAssembly
(
Assembly
.
GetExecutingAssembly
());
}
}
}
\ No newline at end of file
src/Plus.MongoDB/Repositories/MongoDbRepositoryBase.cs
0 → 100644
View file @
86f50128
using
MongoDB.Driver
;
using
MongoDB.Driver.Linq
;
using
Plus.Domain.Entities
;
using
Plus.Domain.Repositories
;
using
System.Linq
;
namespace
Plus.MongoDb.Repositories
{
/// <summary>
/// MongoDB Repository
/// </summary>
/// <typeparam name="TEntity"></typeparam>
public
class
MongoDbRepositoryBase
<
TEntity
>
:
MongoDbRepositoryBase
<
TEntity
,
int
>,
IRepository
<
TEntity
>
where
TEntity
:
class
,
IEntity
<
int
>
{
public
MongoDbRepositoryBase
(
IMongoDatabaseProvider
databaseProvider
)
:
base
(
databaseProvider
)
{
}
}
/// <summary>
/// MongoDB Repository
/// </summary>
/// <typeparam name="TEntity"></typeparam>
/// <typeparam name="TPrimaryKey"></typeparam>
public
class
MongoDbRepositoryBase
<
TEntity
,
TPrimaryKey
>
:
PlusRepositoryBase
<
TEntity
,
TPrimaryKey
>
where
TEntity
:
class
,
IEntity
<
TPrimaryKey
>
{
public
virtual
MongoDatabase
Database
{
get
{
return
_databaseProvider
.
Database
;
}
}
public
virtual
MongoCollection
<
TEntity
>
Collection
{
get
{
return
_databaseProvider
.
Database
.
GetCollection
<
TEntity
>(
typeof
(
TEntity
).
Name
);
}
}
private
readonly
IMongoDatabaseProvider
_databaseProvider
;
public
MongoDbRepositoryBase
(
IMongoDatabaseProvider
databaseProvider
)
{
_databaseProvider
=
databaseProvider
;
}
public
override
IQueryable
<
TEntity
>
GetAll
()
{
return
Collection
.
AsQueryable
();
}
public
override
TEntity
Get
(
TPrimaryKey
id
)
{
var
query
=
MongoDB
.
Driver
.
Builders
.
Query
<
TEntity
>.
EQ
(
e
=>
e
.
Id
,
id
);
var
entity
=
Collection
.
FindOne
(
query
);
if
(
entity
.
IsNull
())
{
throw
new
EntityNotFoundException
(
"There is no such an entity with given primary key. Entity type: "
+
typeof
(
TEntity
).
FullName
+
", primary key: "
+
id
);
}
return
entity
;
}
public
override
TEntity
FirstOrDefault
(
TPrimaryKey
id
)
{
var
query
=
MongoDB
.
Driver
.
Builders
.
Query
<
TEntity
>.
EQ
(
e
=>
e
.
Id
,
id
);
return
Collection
.
FindOne
(
query
);
}
public
override
TEntity
Insert
(
TEntity
entity
)
{
Collection
.
Insert
(
entity
);
return
entity
;
}
public
override
TEntity
Update
(
TEntity
entity
)
{
Collection
.
Save
(
entity
);
return
entity
;
}
public
override
void
Delete
(
TEntity
entity
)
{
Delete
(
entity
.
Id
);
}
public
override
void
Delete
(
TPrimaryKey
id
)
{
var
query
=
MongoDB
.
Driver
.
Builders
.
Query
<
TEntity
>.
EQ
(
e
=>
e
.
Id
,
id
);
Collection
.
Remove
(
query
);
}
}
}
\ No newline at end of file
src/Plus.MongoDB/Uow/MongoDbUnitOfWork.cs
0 → 100644
View file @
86f50128
using
MongoDB.Driver
;
using
Plus.Dependency
;
using
Plus.Domain.Uow
;
using
Plus.MongoDb.Configuration
;
using
System.Threading.Tasks
;
namespace
Plus.MongoDb.Uow
{
/// <summary>
/// 工作单元
/// TODO...
/// </summary>
public
class
MongoDbUnitOfWork
:
UnitOfWorkBase
,
ITransientDependency
{
public
MongoDatabase
Database
{
get
;
private
set
;
}
private
readonly
IMongoDbModuleConfiguration
_configuration
;
public
MongoDbUnitOfWork
(
IMongoDbModuleConfiguration
configuration
,
IConnectionStringResolver
connectionStringResolver
,
IUnitOfWorkFilterExecuter
filterExecuter
,
IUnitOfWorkDefaultOptions
defaultOptions
)
:
base
(
connectionStringResolver
,
defaultOptions
,
filterExecuter
)
{
_configuration
=
configuration
;
}
public
override
void
SaveChanges
()
{
throw
new
System
.
NotImplementedException
();
}
public
override
Task
SaveChangesAsync
()
{
throw
new
System
.
NotImplementedException
();
}
protected
override
void
CompleteUow
()
{
throw
new
System
.
NotImplementedException
();
}
protected
override
Task
CompleteUowAsync
()
{
throw
new
System
.
NotImplementedException
();
}
protected
override
void
DisposeUow
()
{
throw
new
System
.
NotImplementedException
();
}
}
}
\ No newline at end of file
src/Plus.MongoDB/Uow/UnitOfWorkMongoDatabaseProvider.cs
0 → 100644
View file @
86f50128
using
MongoDB.Driver
;
using
Plus.Dependency
;
using
Plus.Domain.Uow
;
namespace
Plus.MongoDb.Uow
{
/// <summary>
/// Implements <see cref="IMongoDatabaseProvider"/> that gets database from active unit of work.
/// </summary>
public
class
UnitOfWorkMongoDatabaseProvider
:
IMongoDatabaseProvider
,
ITransientDependency
{
public
MongoDatabase
Database
{
get
{
return
((
MongoDbUnitOfWork
)
_currentUnitOfWork
.
Current
).
Database
;
}
}
private
readonly
ICurrentUnitOfWorkProvider
_currentUnitOfWork
;
public
UnitOfWorkMongoDatabaseProvider
(
ICurrentUnitOfWorkProvider
currentUnitOfWork
)
{
_currentUnitOfWork
=
currentUnitOfWork
;
}
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment