enable-migrations -contexttypename schoolcontext
add-migration initialcreate
update-database
install-package PagedList.Mvc
[DatabaseGenerated(DatabaseGeneratedOption.None)] - provided by user - rather generating.
Install-Package SimpleInjector.Integration.Web.Mvc @Html.ListBox("Categories", (MultiSelectList)ViewBag.Categories , new { @class = "form-control", data_placeholder = "Choose a Category" })
ViewBag.Categories = new MultiSelectList(db.Categories.ToList(), "Id", "Name");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.0/themes/smoothness/jquery-ui.css">
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.0/jquery-ui.min.js"></script>
[DataType(DataType.Date), DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode =true)]
$(function(){
$(".datepickerClass").datepicker({ dateFormat: 'dd/mm/yy' });
});
IRepository
public interface IRepository<T> where T : class
{
// CRUD
T Add(T entity);
IEnumerable<T> All();
IEnumerable<T> FindBy(Expression<Func<T, bool>> predicate);
void Edit(T entity);
T Delete(T entity);
}
Implement IRepository
public abstract class Repository<T> : IRepository<T> where T : class
{
protected DbContext db;
public Repository(DbContext _db)
{
db = _db;
}
public virtual T Add(T entity)
{
return db.Set<T>().Add(entity);
}
public virtual IEnumerable<T> All()
{
return db.Set<T>().AsEnumerable();
}
public virtual T Delete(T entity)
{
return db.Set<T>().Remove(entity);
}
public virtual void Edit(T entity)
{
db.Entry(entity).State = EntityState.Modified;
}
public virtual IEnumerable<T> FindBy(Expression<Func<T, bool>> predicate)
{
return db.Set<T>().Where(predicate).AsEnumerable();
}
}
IUnitofWork
public interface IUnitofWork : IDisposable
{
int commit();
}
UnitOfWork
public sealed class UnitofWork : IUnitofWork
{
private DbContext db;
public UnitofWork(DbContext _db)
{
db = _db;
}
public int commit()
{
return db.SaveChanges();
}
public void Dispose()
{
if (db != null)
{
db.Dispose();
db = null;
}
GC.SuppressFinalize(db);
}
}
Injector DI - App Start
https://simpleinjector.readthedocs.io/en/latest/mvcintegration.html
var container = new Container();
container.Options.DefaultScopedLifestyle = new WebRequestLifestyle();
// Register your types, for instance:
container.Register<IUserRepository, SqlUserRepository>(Lifestyle.Scoped);
// This is an extension method from the integration package.
container.RegisterMvcControllers(Assembly.GetExecutingAssembly());
// This is an extension method from the integration package as well.
container.RegisterMvcIntegratedFilterProvider();
container.Verify();
DependencyResolver.SetResolver(new SimpleInjectorDependencyResolver(container));
add-migration initialcreate
update-database
install-package PagedList.Mvc
[DatabaseGenerated(DatabaseGeneratedOption.None)] - provided by user - rather generating.
Install-Package SimpleInjector.Integration.Web.Mvc @Html.ListBox("Categories", (MultiSelectList)ViewBag.Categories , new { @class = "form-control", data_placeholder = "Choose a Category" })
ViewBag.Categories = new MultiSelectList(db.Categories.ToList(), "Id", "Name");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.0/themes/smoothness/jquery-ui.css">
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.0/jquery-ui.min.js"></script>
[DataType(DataType.Date), DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode =true)]
$(function(){
$(".datepickerClass").datepicker({ dateFormat: 'dd/mm/yy' });
});
IRepository
public interface IRepository<T> where T : class
{
// CRUD
T Add(T entity);
IEnumerable<T> All();
IEnumerable<T> FindBy(Expression<Func<T, bool>> predicate);
void Edit(T entity);
T Delete(T entity);
}
Implement IRepository
public abstract class Repository<T> : IRepository<T> where T : class
{
protected DbContext db;
public Repository(DbContext _db)
{
db = _db;
}
public virtual T Add(T entity)
{
return db.Set<T>().Add(entity);
}
public virtual IEnumerable<T> All()
{
return db.Set<T>().AsEnumerable();
}
public virtual T Delete(T entity)
{
return db.Set<T>().Remove(entity);
}
public virtual void Edit(T entity)
{
db.Entry(entity).State = EntityState.Modified;
}
public virtual IEnumerable<T> FindBy(Expression<Func<T, bool>> predicate)
{
return db.Set<T>().Where(predicate).AsEnumerable();
}
}
IUnitofWork
public interface IUnitofWork : IDisposable
{
int commit();
}
UnitOfWork
public sealed class UnitofWork : IUnitofWork
{
private DbContext db;
public UnitofWork(DbContext _db)
{
db = _db;
}
public int commit()
{
return db.SaveChanges();
}
public void Dispose()
{
if (db != null)
{
db.Dispose();
db = null;
}
GC.SuppressFinalize(db);
}
}
Injector DI - App Start
https://simpleinjector.readthedocs.io/en/latest/mvcintegration.html
var container = new Container();
container.Options.DefaultScopedLifestyle = new WebRequestLifestyle();
// Register your types, for instance:
container.Register<IUserRepository, SqlUserRepository>(Lifestyle.Scoped);
// This is an extension method from the integration package.
container.RegisterMvcControllers(Assembly.GetExecutingAssembly());
// This is an extension method from the integration package as well.
container.RegisterMvcIntegratedFilterProvider();
container.Verify();
DependencyResolver.SetResolver(new SimpleInjectorDependencyResolver(container));