在http://www.asp.net中有MVC3的例子MVCMusicStore
在第4步(http://www.asp.net/mvc/tutorials/mvc-music-store-part-4)中添加数据访问时碰到个问题.
在这步操作中..例子使用了Nuget添加了EFCodeFirst,
问题1: EFCodeFirst是不是EntityFramework??
问题2: 当使用storeDB.Genres.ToList();为什么查询的表名会自动添加s,例如,原表Genre
的查询语句变成 select * from Geners 而导致数据库查询报错。。按例子的步骤的下来。未发现有配置方式,而数据库脚本生成的表名是不带s的。
public class MusicStoreEntities : DbContext
{
public DbSet<Album> Albums { get; set; }
public DbSet<Genre> Genres { get; set; }
public DbSet<Artist> Artists { get; set; }
}
public class StoreController : Controller
{
MusicStoreEntities storeDB = new MusicStoreEntities();
public ActionResult Index()
{
var genres = storeDB.Genres.ToList();
return View(genres);
}
public ActionResult Browse(string genre)
{
// Retrieve Genre and its Associated Albums from database
var genreModel = storeDB.Genres.Include("Albums")
.Single(g => g.Name == genre);
return View(genreModel);
}
public ActionResult Details(int id)
{
var album = storeDB.Albums.Find(id);
return View(album);
}
}
因为你打开了数据库表单复数的选项。
这个选项在这里:Visual Studio -> 工具 ->选项 ->数据库工具 -> O/R Desiger -> 名称的复数形式。
当然你也可以把数据库表都命名成复数,比如表明是Albums,而不是Album,这样你就可以顺应复数形式。
希望回答对你有帮助。
你可以将demo下载之后,在reference中添加对EntityFramework.dll的应用,在下载的文件夹packet中有的
可以重载OnModelCreating方法
protected override void OnModelCreating(DbModelBuilder modelBuilder) { //base.OnModelCreating(modelBuilder); modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); //防止ef把数据库表查询变为复数,plura
}