Advertisement
Guest User

Untitled

a guest
Apr 18th, 2014
44
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.92 KB | None | 0 0
  1. public class Item
  2. {
  3. public int ItemId { get; set; }
  4. public string ItemName { get; set; }
  5. public string ItemDesc { get; set; }
  6. public string Brand { get; set; }
  7. public string Category { get; set; }
  8. public decimal ItemPrice { get; set; }
  9. }
  10.  
  11. public interface IItemRepository
  12. {
  13. IQueryable<Item> Items { get; }
  14. }
  15.  
  16. public class EFItemRepository : IItemRepository
  17. {
  18. private EFdbContext context = new EFdbContext();
  19.  
  20. public IQueryable<Item> Items
  21. {
  22. get { return context.Items; }
  23. }
  24. }
  25.  
  26. class EFdbContext
  27. {
  28. public DbSet<Item> Items { get; set; }
  29. }
  30.  
  31. public class NinjectControllerFactory : DefaultControllerFactory
  32. {
  33. private IKernel ninjectKernel;
  34.  
  35. public NinjectControllerFactory()
  36. {
  37. ninjectKernel = new StandardKernel();
  38. AddBinding();
  39. }
  40.  
  41. protected override IController GetControllerInstance(System.Web.Routing.RequestContext requestContext, Type controllerType)
  42. {
  43. //return base.GetControllerInstance(requestContext, controllerType);
  44.  
  45. return controllerType == null ? null : (IController)ninjectKernel.Get(controllerType);
  46. }
  47.  
  48. private void AddBinding()
  49. {
  50. ////Old binding to bind to moq item repo - All this works
  51. //Mock<IItemRepository> mock = new Mock<IItemRepository>();
  52. //mock.Setup(m => m.Items).Returns(new List<Item>
  53. //{
  54. // new Item{ItemId=1,ItemName="Trolley", ItemPrice=100M},
  55. // new Item{ItemId=1,ItemName="Irons", ItemPrice=255M},
  56. // new Item{ItemId=1,ItemName="Driver", ItemPrice=129.67M}
  57. //}.AsQueryable());
  58.  
  59. //ninjectKernel.Bind<IItemRepository>().ToConstant(mock.Object);
  60.  
  61.  
  62. //New binding to bind to real db
  63. ninjectKernel.Bind<IItemRepository>().To<EFItemRepository>();
  64. }
  65. }
  66.  
  67. public class ItemController : Controller
  68. {
  69. private IItemRepository repository;
  70.  
  71. public ItemController(IItemRepository itemRepository)
  72. {
  73. this.repository = itemRepository;
  74. }
  75.  
  76. public ViewResult Index()
  77. {
  78. return View(repository.Items);
  79. }
  80. }
  81.  
  82. @model IEnumerable<SHGolfStore.Domain.Entities.Item>
  83.  
  84. @{
  85. ViewBag.Title = "Index";
  86. }
  87.  
  88. @{
  89. //TODO FR: Part 6
  90. }
  91.  
  92. <h2>MY DI Stuff Part 1</h2>
  93. <br />
  94.  
  95. @foreach (var i in Model)
  96. {
  97. <div class="item">
  98. <h4>@i.ItemName (€@i.ItemPrice)</h4>
  99. </div>
  100. }
  101.  
  102. ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory());
  103.  
  104. <add name="EFDbContext" connectionString="Data Source=(LocalDb)v11.0;Initial Catalog=aspnet-SHGolfStore.WebUI-20140413135241;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnet-SHGolfStore.WebUI-20140413135241.mdf" providerName="System.Data.SqlClient" />
  105. <add name="DefaultConnection" connectionString="Data Source=(LocalDb)v11.0;Initial Catalog=aspnet-SHGolfStore.WebUI-20140413135241;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnet-SHGolfStore.WebUI-20140413135241.mdf" providerName="System.Data.SqlClient" />
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement