问题是在新建Controller类时发现的,新建Controller时选择了新增Data Context Class,将名称命名为
MusicStoreDB,然后生成的代码如下所示:
public class MusicStoreDB : DbContext
    {
       public DbSet<Album> Album { get; set; }        public DbSet<Genre> Genre { get; set; }        public DbSet<Artist> Artist { get; set; }
    }奇怪的是生成的实体集合的名称像Album,Genre都是单数形式,为什么不是复数形式?我在项目中定义了Album,Genre,Artist三个实体类,放在三个cs文件中,具体代码如下所示:
Album.cs    public class Album
    {
        
        public virtual int AlbumId { get; set; }
        public virtual int GenreId { get; set; }
        public virtual int ArtistId { get; set; }
        public virtual string Title { get; set; }
        public virtual decimal Price { get; set; }
        public virtual string AlbumArtUrl { get; set; }
        public virtual Genre Genre { get; set; }
        public virtual Artist Artist { get; set; }                                        
    }Genre.cs     public class Genre
    {
        public virtual int GenreId { get; set; }
        public virtual string Name { get; set; }
        public virtual string Description { get; set; }
        public virtual List<Album> Albums { get; set; }
    }Artist.cs  public class Artist
    {
        public virtual int ArtistId { get; set; }
        public virtual string Name { get; set; }
    }
是不是要在哪里配置下?还是说要通过运行EDM向导才能重新配置?

解决方案 »

  1.   

    这个在从数据库生成实体的时候,有个Checkbox 问是否要复数的选框。
      

  2.   

    你是在做那个MvcMusicStore么?好好看看人家提供的教程和源代码,你有什么差错。
      

  3.   

    [我现在看的是asp.net mvc3高级编程这本书,它也是在用MvcMusicStore这个项目作为讲解的,我只定义了三个实体类,并没有新建数据库,它应该会自己创建一个sqlserver express版本的数据库,现在的问题是生成的实体集合的名称像Album,Genre都是单数形式,并不是复数形式,除此之外没有出现什么其他的问题,我所做的事按照顺序来说是:新建Controller->指定 Data Context类的名称->然后发现生成的实体集合的名称都是单数形式,我并没有通过EDM向导来创建实体数据模型所以不明白应该在哪里配置才好,难道只能重新来过,运行EDM向导在那里配置?
      

  4.   

    我只定义了三个实体类,并没有新建数据库,它应该会自己创建一个sqlserver express版本的数据库,现在的问题是生成的实体集合的名称像Album,Genre都是单数形式,并不是复数形式,除此之外没有出现什么其他的问题,我所做的事按照顺序来说是:新建Controller->指定 Data Context类的名称->然后发现生成的实体集合的名称都是单数形式,我并没有通过EDM向导来创建实体数据模型所以不明白应该在哪里配置才好,难道只能重新来过,运行EDM向导在那里配置? 
      

  5.   

    这个没啥好纠结的吧,就是个变量名,自己改一下就是了,连BUG都算不上。不过我试了一下倒是带复数形式的,可能是版本问题,我的是EF 5.0.
      

  6.   

    我用的EF版本是4.1,奇怪的是在控制器中自动生成的代码引用的属性确是复数,所以报错了,这是自动生成的Create操作方法中的代码:
      public ActionResult Create()
            {
                ViewBag.GenreId = new SelectList(db.Genres, "GenreId", "Name");
                ViewBag.ArtistId = new SelectList(db.Artists, "ArtistId", "Name");
                
                return View();
            } 我的Ablum类的代码如下:
    public class Album
        {
            
            public virtual int AlbumId { get; set; }
            public virtual int GenreId { get; set; }
            public virtual int ArtistId { get; set; }
            public virtual string Title { get; set; }
            public virtual decimal Price { get; set; }
            public virtual string AlbumArtUrl { get; set; }
            public virtual Genre Genre { get; set; }
            public virtual Artist Artist { get; set; }                                        
        }