Entity framework 关系,代码优先
Entity framework relations, code-first
我正在尝试理清三个 table 之间的关系。
表格:
Director
1个导演可以"have"多部电影。所以在我有很多电影的数据库中,directorId 可以作为外键出现在其中的几部电影中。
Film
每部电影只有 1 位导演和 1 条评论
Review
在这种情况下,每部电影只有 1 条评论。所以我想 reviewId 应该作为外键出现在 Film
.
中
我现在的样子:
public class Director
{
public int DirectorId { get; set; }
public string Name { get; set; }
}
public class Film
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int FilmId { get; set; }
public string Title { get; set; }
[Key, ForeignKey("Director")]
public int DirectorId { get; set; }
public virtual Director Director { get; set; }
}
public class Review
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ReviewId { get; set; }
public string Text { get; set; }
[Key, ForeignKey("Film")]
public int FilmId { get; set; }
public virtual Film Film { get; set; }
}
我想问题是在我尝试添加第二部电影时出现的,其 directorId 已经存在于另一个 table 中。我尝试在 Management studio 中对其进行硬编码,但出现以下错误:
Cannot insert duplicate key in object "dbo.film". The duplicate key value is(1)
当然(1)是之前电影中已经存在的DirectorId。
我正在使用 Entity framework Code first,非常感谢有关如何正确设置它的帮助。
从 Films
和 Reviews
表中的 DirectorId
和 FilmId
中删除 Key
属性。因为您为这些表定义了一个 Key
属性(如果您查看您创建的表,您可以看到这些字段具有主键),所以您不能在这些表中插入具有相同 FilmId\DirectorId 的两条记录
[ForeignKey("Director")]
public int DirectorId { get; set; }
[ForeignKey("Film")]
public int FilmId { get; set; }
我正在尝试理清三个 table 之间的关系。
表格:
Director
1个导演可以"have"多部电影。所以在我有很多电影的数据库中,directorId 可以作为外键出现在其中的几部电影中。
Film
每部电影只有 1 位导演和 1 条评论
Review
在这种情况下,每部电影只有 1 条评论。所以我想 reviewId 应该作为外键出现在 Film
.
我现在的样子:
public class Director
{
public int DirectorId { get; set; }
public string Name { get; set; }
}
public class Film
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int FilmId { get; set; }
public string Title { get; set; }
[Key, ForeignKey("Director")]
public int DirectorId { get; set; }
public virtual Director Director { get; set; }
}
public class Review
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ReviewId { get; set; }
public string Text { get; set; }
[Key, ForeignKey("Film")]
public int FilmId { get; set; }
public virtual Film Film { get; set; }
}
我想问题是在我尝试添加第二部电影时出现的,其 directorId 已经存在于另一个 table 中。我尝试在 Management studio 中对其进行硬编码,但出现以下错误:
Cannot insert duplicate key in object "dbo.film". The duplicate key value is(1)
当然(1)是之前电影中已经存在的DirectorId。
我正在使用 Entity framework Code first,非常感谢有关如何正确设置它的帮助。
从 Films
和 Reviews
表中的 DirectorId
和 FilmId
中删除 Key
属性。因为您为这些表定义了一个 Key
属性(如果您查看您创建的表,您可以看到这些字段具有主键),所以您不能在这些表中插入具有相同 FilmId\DirectorId 的两条记录
[ForeignKey("Director")]
public int DirectorId { get; set; }
[ForeignKey("Film")]
public int FilmId { get; set; }