Commit e95902dc authored by 阿星Plus's avatar 阿星Plus

TODO MongoDbRepositoryBase

parent 8317b59a
...@@ -2,14 +2,11 @@ ...@@ -2,14 +2,11 @@
namespace Plus.MongoDb namespace Plus.MongoDb
{ {
/// <summary>
/// Defines interface to obtain a <see cref="MongoDatabase"/> object.
/// </summary>
public interface IMongoDatabaseProvider public interface IMongoDatabaseProvider
{ {
/// <summary>
/// Gets the <see cref="MongoDatabase"/>. IMongoClient Client { get; }
/// </summary>
MongoDatabase Database { get; } IMongoDatabase Database { get; }
} }
} }
\ No newline at end of file
using Plus.Modules; using Plus.Modules;
using Plus.MongoDb.Configuration; using Plus.MongoDb.Configuration;
using Plus.MongoDb.Uow;
using System.Reflection; using System.Reflection;
namespace Plus.MongoDb namespace Plus.MongoDb
...@@ -17,6 +18,7 @@ namespace Plus.MongoDb ...@@ -17,6 +18,7 @@ namespace Plus.MongoDb
public override void Initialize() public override void Initialize()
{ {
IocManager.Register<IMongoDatabaseProvider, UnitOfWorkMongoDatabaseProvider> ();
IocManager.RegisterAssembly(Assembly.GetExecutingAssembly()); IocManager.RegisterAssembly(Assembly.GetExecutingAssembly());
} }
} }
......
using MongoDB.Driver; using MongoDB.Driver;
using MongoDB.Driver.Linq; using MongoDB.Driver.Linq;
using Plus.Dependency;
using Plus.Domain.Entities; using Plus.Domain.Entities;
using Plus.Domain.Repositories; using Plus.Domain.Repositories;
using System.Linq; using System.Linq;
...@@ -10,8 +11,7 @@ namespace Plus.MongoDb.Repositories ...@@ -10,8 +11,7 @@ namespace Plus.MongoDb.Repositories
/// MongoDB Repository /// MongoDB Repository
/// </summary> /// </summary>
/// <typeparam name="TEntity"></typeparam> /// <typeparam name="TEntity"></typeparam>
public class MongoDbRepositoryBase<TEntity> : MongoDbRepositoryBase<TEntity, int>, IRepository<TEntity> public abstract class MongoDbRepositoryBase<TEntity> : MongoDbRepositoryBase<TEntity, int>, IRepository<TEntity>, IRepository<TEntity, int>, IRepository, ITransientDependency where TEntity : class, IEntity<int>
where TEntity : class, IEntity<int>
{ {
public MongoDbRepositoryBase(IMongoDatabaseProvider databaseProvider) public MongoDbRepositoryBase(IMongoDatabaseProvider databaseProvider)
: base(databaseProvider) : base(databaseProvider)
...@@ -24,23 +24,26 @@ namespace Plus.MongoDb.Repositories ...@@ -24,23 +24,26 @@ namespace Plus.MongoDb.Repositories
/// </summary> /// </summary>
/// <typeparam name="TEntity"></typeparam> /// <typeparam name="TEntity"></typeparam>
/// <typeparam name="TPrimaryKey"></typeparam> /// <typeparam name="TPrimaryKey"></typeparam>
public class MongoDbRepositoryBase<TEntity, TPrimaryKey> : PlusRepositoryBase<TEntity, TPrimaryKey> public abstract class MongoDbRepositoryBase<TEntity, TPrimaryKey> : PlusRepositoryBase<TEntity, TPrimaryKey> where TEntity : class, IEntity<TPrimaryKey>
where TEntity : class, IEntity<TPrimaryKey>
{ {
public virtual MongoDatabase Database private readonly IMongoDatabaseProvider _databaseProvider;
{
get { return _databaseProvider.Database; } public virtual IMongoDatabase Database => _databaseProvider.Database;
}
public virtual MongoCollection<TEntity> Collection public virtual IMongoCollection<TEntity> Collection
{ {
get get
{ {
return _databaseProvider.Database.GetCollection<TEntity>(typeof(TEntity).Name); string name = CollectionName;
if (CollectionName.IsNullOrEmpty())
{
name = typeof(TEntity).Name;
}
return _databaseProvider.Database.GetCollection<TEntity>(name, null);
} }
} }
private readonly IMongoDatabaseProvider _databaseProvider; public abstract string CollectionName { get; }
public MongoDbRepositoryBase(IMongoDatabaseProvider databaseProvider) public MongoDbRepositoryBase(IMongoDatabaseProvider databaseProvider)
{ {
...@@ -55,7 +58,7 @@ namespace Plus.MongoDb.Repositories ...@@ -55,7 +58,7 @@ namespace Plus.MongoDb.Repositories
public override TEntity Get(TPrimaryKey id) public override TEntity Get(TPrimaryKey id)
{ {
var query = MongoDB.Driver.Builders.Query<TEntity>.EQ(e => e.Id, id); var query = MongoDB.Driver.Builders.Query<TEntity>.EQ(e => e.Id, id);
var entity = Collection.FindOne(query); var entity = Collection.Find(query);
if (entity.IsNull()) if (entity.IsNull())
{ {
throw new EntityNotFoundException("There is no such an entity with given primary key. Entity type: " + typeof(TEntity).FullName + ", primary key: " + id); throw new EntityNotFoundException("There is no such an entity with given primary key. Entity type: " + typeof(TEntity).FullName + ", primary key: " + id);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment