实体框架:引用其他对象

问题描述 投票:0回答:1

我有一个

Movie
类,其中包含
Actors
Directors
列表。 每当我创建一个使用这些的
Movie
(使用 Rest API)时,一切都很好。

但是当我使用已经存在的

Actor
/
Director
创建第二个时,我的第一个
Movie
失去了对所述
Actor
/
Director
的引用。

我该如何解决这个问题,以免出现这种情况?我应该创建一个引用

Movies
Actors
/
Directors
的新类吗?我该怎么办?

这是我的课程,以防万一有什么东西引起注意。

public class Movie
{
    public int Id { get; set; }
    public required string Title { get; set; }
    public required List<Actor> Actors { get; set; }
    public required List<Director> Directors { get; set; }
}

我正在使用实体框架的 InMemory 数据库系统。

其他一切似乎都工作正常。

Movie
引用了
Actors
Directors
,但不是相反,我想避免这种情况。

c# rest entity-framework in-memory-database
1个回答
0
投票

您确实应该提供

Actor
Director
的模型,但是根据行为,我假设您设置了从
Actor
|
Director
Movie
的 1:N 关系,因此每个
Actor 
Director
只能与单个
Movie
关联。该关系应该设置为多对多,因为一部电影可以有多个演员/导演,而演员/导演可以有多部电影,因此
Actor
|
Director
也应该具有
List<Movie> Movies
属性而不是
Movie Movie 
应适当设置属性和/或流畅配置:

builder.Entity<Movie>
    .HasMany( m => m.Actors )
    .WithMany( a => a.Movies );
    // or, if no corresponding navigation properties on Movies
    // .WithMany();

https://learn.microsoft.com/en-us/ef/core/modeling/relationships/many-to-many

© www.soinside.com 2019 - 2024. All rights reserved.