设计图像表的实体框架结构

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

我正在使用三个表:电影、演员和导演,并且我需要创建额外的表来存储图像。

核心思想是能够添加照片,将其与电影关联,并指定照片中描绘的演员或导演(这些关联是可选的,或者只能与演员或导演关联)。这意味着在数据库模式中,我将在“Photo”表中拥有一条记录,在“PhotoConnection”表中拥有多个连接。

以下是表格的细分:

照片表:

  • 身份证
  • 标题
  • 描述
  • 网址

照片连接表:

  • 身份证
  • 照片ID
  • 类型
  • 对象ID

在“PhotoConnection”表中,“Type”字段是一个枚举,指示连接是否与电影、演员或导演相关。 “ObjectId”字段将相应实体的 ID 存储在这些表之一中。

主要挑战在于使用实体框架实现此架构,以便轻松搜索这些表。我怎样才能最好地实现这一目标?

c# sql-server entity-framework
1个回答
0
投票

我认为配置表格的正确方法是:

public class Movie
{
    public int Id { get; set; }
    public string Name { get; set; }            
    public IList<Actor> Actors { get; set; }
    public IList<Director> Directors { get; set; }
    public IList<Photo> Photos { get; set; }
}

public class  Actor
{
    public int Id { get; set; }
    public string Name { get; set; }
    public IList<Movie> Movies { get; set; }
    public IList<Photo> Photos { get; set; }
}

public class Director
{
    public int Id { get; set; }
    public string Name { get; set; }
    public IList<Movie> Movies { get; set; }
    public IList<Photo> Photos { get; set; }
}

public class Photo
{
    public int Id { get; set; }
    public string Title { get; set; }
    public string Description { get; set; }
    public string URL { get; set; }
    public int MovieId { get; set; }
    [DeleteBehavior(DeleteBehavior.NoAction)]
    public Movie Movie { get; set; }
    public IList<Actor> Actors { get; set; }
    public IList<Director> Directors { get; set; }
}

显然,为了处理所有(多对多)关系,EF 将创建一些额外的表,但不用担心它们,并根据需要对这四个表使用 LINQ 查询...

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