0
我试图通过EF代码第一种方法实现多对多的关系与链接表。为什么“艺术家”表和链接表“ArtistAlbums”没有填充
类和上下文类是下面,
public class Album
{
public Album()
{
Artists = new List<Artist>();
}
public int AlbumId { get; set; }
public string AlbumName { get; set; }
public List<Artist> Artists { get; set; }
}
public class Artist
{
public Artist()
{
Albums = new List<Album>();
}
public int ArtistId { get; set; }
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string LastName { get; set; }
public List<Album> Albums { get; set; }
}
public class ContextClass : DbContext
{
public DbSet<Album> Albums { get; set; }
public DbSet<Artist> Artists { get; set; }
}
虽然我尝试添加专辑两位艺术家,然后填充数据只在“专辑”表,但没有在其他表中的可用数据“艺术家“并在链接表中,请建议?
using (var context = new ContextClass())
{
// add an album for two artists
var artist1 = new Artist { FirstName = "Tobby", LastName = "Keith" };
var artist2 = new Artist { FirstName = "Merle", LastName = "Haggard" };
var album = new Album { AlbumName = "Honkytonk University" };
artist1.Albums.Add(album);
artist2.Albums.Add(album);
context.Albums.Add(album);
context.SaveChanges();
}
你试过用'album.Artists.Add(artist1); album.Artists.Add(artist2);'而不是? – Vlad274
这是有效的。哇!但有什么区别? – user584018
将专辑添加到艺术家时,您可以从“艺术家” - >“专辑”创建链接。然后,将专辑对象添加到上下文。专辑对象没有链接,所以EF不做任何事情。你也可以改变代码到'context.Artists.Add(artist1); context.Artists.Add(artist2);'和EF会看到链接并创建专辑 – Vlad274