-
-
Save mahizsas/846e9a6c7814f6805c1f to your computer and use it in GitHub Desktop.
Sample ASP.NET MVC controller with MongoDb repository
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Domain | |
interface IUsersRepository | |
{ | |
IEnumerable<User> FindAll(int pageIndex, int pageSize); | |
} | |
class User | |
{ | |
public int Id { get; private set; } | |
public string Username { get; private set; } | |
} | |
// Web | |
class UsersController : System.Web.Mvc.Controller | |
{ | |
private readonly IUsersRepository _usersRepository; | |
public UsersController(IUsersRepository usersRepository) | |
{ | |
_usersRepository = usersRepository; | |
} | |
public ActionResult Index(int pageIndex) | |
{ | |
var users = _usersRepository.FindAll(pageIndex, 100); | |
} | |
} | |
// Infrastructure | |
class MongoDbUsersRepository : IUsersRepository | |
{ | |
private readonly MongoDatabase _database; | |
public MongoDbUsersRepository(string connectionString) | |
{ | |
var url = new MongoUrl(connectionString); | |
var client = new MongoClient(url); | |
var server = client.GetServer(); | |
var database = server.GetDatabase(url.DatabaseName); | |
_database = database; | |
} | |
public IEnumerable<User> FindAll(int pageIndex, int pageSize) | |
{ | |
var collection = _database.GetCollection<User>("Users"); | |
var users = collection.FindAll().SetSortOrder("Username").SetSkip((pageIndex - 1) * pageSize).SetLimit(pageSize).ToList(); | |
return users; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment