我想简单地创建两个已经存在的实体之间的关系..
在我的情况下,我有一个专辑实体,它可能有多个流派(这也是一堆实体)
我的专辑模型如下所示:
public class AlbumModel : IModel
{
public List<GenreModel> Genres { get; set; }
public ArtistModel Artist { get; set; }
public Guid Id { get; set; }
public string Title { get; set; }
public float Price { get; set; }
public string ArtUrl { get; set; }
}
然后我想在专辑模型对象和一堆流派模型对象/实体之间创建关系。
在“正常”实体框架中,我只会分配一个新的 EntityKey.. 但我不太确定如何首先使用代码来执行此操作.. 我还注意到有些人为他们想要创建的实体有一个名为 xxxxId 的额外属性之间的引用..然后简单地为 xxxxId 属性分配一个值,该属性有些神奇地创建了实体之间的引用..我猜这对于一对一或一对多的关系很好用..但我猜不适用于多对多关系..或者?
无论如何..这是我的 GenresModel:
public class GenreModel : IModel
{
public Guid Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public List<AlbumModel> Albums { get; set; }
}
这就是我之前尝试过的......但这不会创建关系......它只会在我的数据库中创建一个额外的实体/行......
var artistRepository = new ArtistRepository();
var genresRepository = new GenreRepository();
#region Lordi
context.Albums.Add
(
new AlbumModel
{
Artist = artistRepository.GetByName("Lordi"),
ArtUrl = "http://upload.wikimedia.org/wikipedia/en/8/8f/The_Monster_Show.jpg",
Genres = new List<GenreModel> { genresRepository.GetByName("Rock"), genresRepository.GetByName("Hard rock") },
Id = Guid.NewGuid(),
Price = 3,
Title = "The Monster Show",
}
);
context.Albums.Add
(
new AlbumModel
{
Artist = artistRepository.GetByName("Lordi"),
ArtUrl = "http://www.nuclearblast.de/static/articles/157/157892.jpg/1000x1000.jpg",
Genres = new List<GenreModel> { genresRepository.GetByName("Rock"), genresRepository.GetByName("Hard rock") },
Id = Guid.NewGuid(),
Price = 10,
Title = "Zombilation - The Greatest Cuts",
}
);
#endregion
...并且为了记录...不,我不听 Lordi :).. 只是虚拟数据.. 由于一些奇怪的怪异原因,Lordi 是第一个想到的乐队..
提前致谢!