Asp.net mvc 访问现有数据库上下文属性
我已经花了很长时间试图解决这个问题,但运气不好,我猜这对有经验的人来说是一件轻而易举的事。我正在使用MvcMusicStore 我有一个db上下文,我已经添加了一个新的专辑与一个新的流派。如果要添加具有相同类型的另一张专辑,如何将现有类型分配给新专辑?如下面的第二张专辑。提前感谢您的帮助Asp.net mvc 访问现有数据库上下文属性,asp.net-mvc,linq,entity-framework,asp.net-mvc-4,Asp.net Mvc,Linq,Entity Framework,Asp.net Mvc 4,我已经花了很长时间试图解决这个问题,但运气不好,我猜这对有经验的人来说是一件轻而易举的事。我正在使用MvcMusicStore 我有一个db上下文,我已经添加了一个新的专辑与一个新的流派。如果要添加具有相同类型的另一张专辑,如何将现有类型分配给新专辑?如下面的第二张专辑。提前感谢您的帮助 protected override void Seed(Models.MusicStoreDBContext context) { context.Artists.Ad
protected override void Seed(Models.MusicStoreDBContext context)
{
context.Artists.Add(new Models.Artist { Name = "Al Di Meola" });
context.Genres.Add(new Models.Genre { Name = "Jazz" });
context.Albums.Add(new Models.Album
{
Artist = new Models.Artist { Name = "Sublime" },
Genre = new Models.Genre { Name = "Rock" },
Price = 11.99m,
Title = "40oz to Freedom"
});
context.Albums.Add(new Models.Album
{
Artist = new Models.Artist { Name = "Jawbox" },
Genre = "Rock", // HOW DO I ASSIGN THIS?
Price = 10.99m,
Title = "For your own special sweetheart"
});
只是使用一个变量
var rock = new Models.Genre{Name="Rock"};
context.Genres.Add(rock);
context.Albums.Add(new Models.Album
{
Artist = new Models.Artist { Name = "Sublime" },
Genre = rock,
Price = 11.99m,
Title = "40oz to Freedom"
});
context.Albums.Add(new Models.Album
{
Artist = new Models.Artist { Name = "Jawbox" },
Genre = rock
Price = 10.99m,
Title = "For your own special sweetheart"
});
只需将新类型指定给一个变量,然后将属性设置为该变量
var rockGenre = new Models.Genre() { Name = "Rock" };
context.Genres.Add(rockGenre);
context.Albums.Add(new Models.Album
{
Artist = new Models.Artist { Name = "Sublime" },
Genre = rockGenre,
Price = 11.99m,
Title = "40oz to Freedom"
});
context.Albums.Add(new Models.Album
{
Artist = new Models.Artist { Name = "Jawbox" },
Genre = rockGenre,
Price = 10.99m,
Title = "For your own special sweetheart"
});
还是子查询
protected override void Seed(Models.MusicStoreDBContext context)
{
context.Artists.Add(new Models.Artist { Name = "Al Di Meola" });
context.Genres.Add(new Models.Genre { Name = "Jazz" });
context.Albums.Add(new Models.Album
{
Artist = new Models.Artist { Name = "Sublime" },
Genre = new Models.Genre { Name = "Rock" },
Price = 11.99m,
Title = "40oz to Freedom"
});
context.Albums.Add(new Models.Album
{
Artist = new Models.Artist { Name = "Jawbox" },
Genre = (context.Genres.FirstOrDefault(x=>x.Name=="Rock")),
Price = 10.99m,
Title = "For your own special sweetheart"
});
}
干杯,伙计,这是我尝试的第一个解决方案,因为我认为它是最干净的,但是我得到了错误。。。“无法确定‘MvcMusicStore.Models.Genre_Albums’关系的主键。多个添加的实体可能具有相同的主键。“我缺少什么?听起来像是与数据库的关系问题。”。这张专辑和流派没有1:1的关系吗?如果这有意义的话,可以将许多专辑分成一个流派吗?使用实体框架,这是MusicStoreDbInitializer,将初始值放入数据库中。这很有意义,你能检查一下这种关系不是偶然的多对多关系吗?它似乎担心会出现PK约束。相册中的流派有FK,但不是相反。谢谢你的回答。我试过上面两种方法。这种方法奏效了。我确实首先尝试了直接访问方法(context.Genres.FirstOrDefault(x=>x.Name==“Rock”)),但出现了一个错误。