【问题标题】:MvcMusicStore database connectionMvcMusicStore 数据库连接
【发布时间】:2015-08-28 09:38:44
【问题描述】:

我正在关注 asp.net MvcMusicStore 教程,一切正常,但数据未添加到 MvcMusicStore.sdf...这是教程中用于连接数据库的页面:http://www.asp.net/mvc/overview/older-versions/mvc-music-store/mvc-music-store-part-4 预期的结果应该返回一个包含所有流派的列表,但在我的情况下,我在 MvcMusicStore.sdf Genres 表中得到了 NULL 值。

我下载了完整的教程,那里一切正常,所有数据值都插入到数据库表中..

SampleData.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;

namespace MvcMusicStore.Models
{
    public class SampleData : DropCreateDatabaseIfModelChanges<MusicStoreEntities>
    {
        protected override void Seed(MusicStoreEntities context)
        {
            var genres = new List<Genre>
            {
                new Genre { Name = "Rock" },
                new Genre { Name = "Jazz" },
                new Genre { Name = "Metal" }
            };

            var artists = new List<Artist>
            {
                new Artist { Name = "Aaron Copland & London Symphony Orchestra" },
                new Artist { Name = "Aaron Goldberg" }
            };

            new List<Album>
            {
                new Album { Title = "A Copland Celebration, Vol. I", Genre = genres.Single(g => g.Name == "Classical"), Price = 8.99M, Artist = artists.Single(a => a.Name == "Aaron Copland & London Symphony Orchestra"), AlbumArtUrl = "/Content/Images/placeholder.gif" },
            }.ForEach(a => context.Albums.Add(a));
        }
    }
}

Web.config:

  <connectionStrings>
    <add name="MusicStoreEntities"
     connectionString="Data Source=|DataDirectory|MvcMusicStore.sdf"
     providerName="System.Data.SqlServerCe.4.0"/>
  </connectionStrings>

全球.asax

protected void Application_Start()
{
    System.Data.Entity.Database.SetInitializer(
        new MvcMusicStore.Models.SampleData());
    AreaRegistration.RegisterAllAreas();
    RegisterGlobalFilters(GlobalFilters.Filters);
    RegisterRoutes(RouteTable.Routes);
}

流派.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace MvcMusicStore.Models
{
    public partial class Genre
    {
        public int GenreId { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
        public List<Album> Albums { get; set; }
    }
}

【问题讨论】:

  • 你能把你的流派模型贴出来吗?
  • DataDirectory 你替换了这个吗?
  • @MatthiasBurger 我已经用流派类更新了代码

标签: c# asp.net asp.net-mvc-3


【解决方案1】:

您没有有效地将流派和艺术家添加到数据库中。

context.Albums.Add(a) 行将专辑添加到上下文中,但缺少对流派和艺术家的等效调用。 应添加以下行:

  • context.Artists.AddRange(artists)
  • context.Genres.AddRange(genres)

【讨论】:

  • 我已经添加了这些代码行,但现在我在 AddRange 上收到以下错误:'System.Data.Entity.DbSet' does not contain a definition for可以找到“AddRange”并且没有扩展方法“AddRange”接受“System.Data.Entity.DbSet”类型的第一个参数(您是否缺少 using 指令或程序集引用?)跨度>
  • 您在哪里添加了代码?如您所见here DbSet 类型支持这些方法。也许您缺少一些命名空间或引用。
猜你喜欢
  • 1970-01-01
  • 2014-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-29
  • 2010-10-01
相关资源
最近更新 更多