首页 新闻 会员 周边

在ASP.NET MVC3 例子(MvcMusicStore)中碰到的问题

0
[已关闭问题] 解决于 2011-09-15 10:59

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);
}
}
Hunt的主页 Hunt | 初学一级 | 园豆:21
提问于:2011-02-21 13:48
< >
分享
其他回答(2)
0

因为你打开了数据库表单复数的选项。

这个选项在这里:Visual Studio -> 工具 ->选项 ->数据库工具 -> O/R Desiger -> 名称的复数形式。

 

当然你也可以把数据库表都命名成复数,比如表明是Albums,而不是Album,这样你就可以顺应复数形式。

希望回答对你有帮助。

邱多云 | 园豆:205 (菜鸟二级) | 2011-02-21 14:42
谢谢您的回复,我之前尝试过将复数形式关掉。。好像没有起作用。我重新尝试下看看。 非常感谢您的帮助 :)
支持(0) 反对(0) Hunt | 园豆:21 (初学一级) | 2011-02-21 14:48
关掉了复数形式以后,要删除之前的storeDB,然后重新建立storeDB
支持(0) 反对(0) 邱多云 | 园豆:205 (菜鸟二级) | 2011-02-21 14:51
0

你可以将demo下载之后,在reference中添加对EntityFramework.dll的应用,在下载的文件夹packet中有的

lxk613 | 园豆:205 (菜鸟二级) | 2011-03-04 20:51
0

可以重载OnModelCreating方法

 protected override void OnModelCreating(DbModelBuilder modelBuilder)        {            //base.OnModelCreating(modelBuilder);            modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); //防止ef把数据库表查询变为复数,plura       

 }

麦田里的守望者 | 园豆:428 (菜鸟二级) | 2011-04-05 18:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册