ASP.NET MVC4 - 第7章(Apres / Adam Freeman)Page 175
有人确实完成了这个例子吗?
我试图在书中做这个例子,是准备数据库一节下的部分。我面临的问题是View没有列出任何产品,我的Table Products有一些行,但视图没有显示任何内容。即使我注释掉了连接字符串,也没有显示任何错误。
我的产品类(SportsStore.domain)
namespace SportsStore.Domain.Entities
{
public class Product
{
public int ProductID { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public decimal Price { get; set; }
public string Category { get; set; }
}
}
Ninject Factory
namespace SportsStore.WebUI.Infrastructure
{
public class NinjectControllerFactory : DefaultControllerFactory
{
private IKernel ninjectKernel;
public NinjectControllerFactory() {
ninjectKernel = new StandardKernel();
AddBindings();
}
protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
{
return controllerType == null
? null
: (IController)ninjectKernel.Get(controllerType);
}
private void AddBindings()
{
ninjectKernel.Bind<IProductRepository>().To<EFProductRepository>();
}
}
}
Iproduct存储库
namespace SportsStore.Domain.Abstract
{
public interface IProductRepository
{
IQueryable<Product> Products { get; }
}
}
答案 0 :(得分:1)
好的,所以我也在与这一个斗争的公共汽车,并在网上搜索了2天,我想出了一个工作,让一切都显示出来。
本书要求您在第181页的Web.Config文件中添加连接字符串,该字符串将替换默认值。
<connectionString>
<add name="EFDbContext"... />
</connectioString>
这本书要求采用“Code First”方法。我无法让它工作,所以我使用“数据库优先”方法explanation of the two methods采用了不同的方法。
为此,您必须在前一个Web.config文件中更改数据库的路径
<add name="EFDbContext" connectionString="Data Source=(localdb)\v11.0;Initial Catalog=SportsStore;Integrated Security=True" providerName="System.Data.SqlClient" />
到此
<add name="EFDbContext" connectionString="Data Source=YourDataBaseHere;Initial Catalog=SportsStore;Integrated Security=True" providerName="System.Data.SqlClient"/>
您可以通过右键单击所需的DB并选择属性来获取连接路径,它将是标记为连接字符串的那个。
我希望这也可以帮助其他正在阅读本书的人!
答案 1 :(得分:0)
我自己造成了这个问题,因为我在创建EFDbContext类时忘了继承DbContext。
答案 2 :(得分:0)
IProductRepository interface has IEnumerable<Product>Products{get;}