Skip to content

Instantly share code, notes, and snippets.

@mahizsas
Forked from hagbarddenstore/Example.cs
Last active August 29, 2015 14:13
Show Gist options
  • Save mahizsas/846e9a6c7814f6805c1f to your computer and use it in GitHub Desktop.
Save mahizsas/846e9a6c7814f6805c1f to your computer and use it in GitHub Desktop.
Sample ASP.NET MVC controller with MongoDb repository
// 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