Базовый сервис
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Example.Data.Services
{
public abstract class BaseService : IDisposable
{
protected ExampleContext context;
protected BaseService()
{
context = new ExampleContext();
}
public void Dispose()
{
context.Dispose();
}
}
}
Сервис пользователей
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Example.Data.Entities;
namespace Example.Data.Services
{
public class UserService : BaseService
{
public UserService()
: base()
{
}
public Account[] GetAllAccounts()
{
return this.context.Accounts.ToArray();
}
public Account GetAccountByEmail(string email)
{
return this.context.Accounts.SingleOrDefault(f => f.Email.Equals(email));
}
public int CreateNewAccount(string email, string password, string nickname)
{
var account = new Account
{
Email = email,
Password = password,
Nickname = nickname,
CreationDate = DateTime.Now
};
this.context.Accounts.Add(account);
this.context.SaveChanges();
return account.Id;
}
public void RemoveAccountByEmail(string email)
{
var user = this.context.Accounts.Single(f => f.Email.Equals(email));
this.context.Accounts.Remove(user);
this.context.SaveChanges();
}
}
}
Контроллер
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Example.Models;
using Example.Data.Services;
namespace Example.Controllers
{
public class DevController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult Accounts()
{
using (var userService = new UserService())
{
var model = new AccountsViewModel { Accounts = userService.GetAllAccounts() };
return View(model);
}
}
public ActionResult AddUser()
{
using (var userService = new UserService())
{
userService.CreateNewAccount(
"TestAccEmail" + DateTime.Now.Ticks,
"TestAccPass" + DateTime.Now.Ticks,
"TestAccNick" + DateTime.Now.Ticks);
return RedirectToAction("Accounts");
}
}
public ActionResult RemoveUser(string email)
{
using (var userService = new UserService())
{
userService.RemoveAccountByEmail(email);
return RedirectToAction("Accounts");
}
}
}
}