gpt4 book ai didi

c# - Code First Entity Framework 和外键

转载 作者:太空狗 更新时间:2023-10-30 02:00:41 25 4
gpt4 key购买 nike

假设我有一个由代码首先创建的数据库,如下所示。

Movie (table)
ID int PK
MoveiName nvarchar(100)

Actor (table)
ID int PK
ActorName nvarchar(100)
Movie_ID int FK

这些是我会使用的模型,显然不完全像这样,但你会明白我的意思。

class Movie
{
int ID{get;set;}
string MovieName {get;set;}
List<Actor> Actors {get;set}
}

class Actor
{
int ID{get;set}
string Actorname{get;set}
Movie Movie{get;set;}
int Move_ID{get;set;}
}

数据库首先使我能够查询 Actor 的电影,但也让我能够设置 Actor 的 forgien 键属性以更新数据库。我不能先在代码中执行此操作,因为外键在模型中不只是对象。我不想获取 Movie 对象并设置属性,如果我知道我的电影的 ID,我宁愿只设置外键而不调用获取电影。

有道理吗?哈哈

我想使用 codefirst 和实体迁移,但我希望具有与数据库相同的能力,以便在对象上设置外键。

为帮助干杯:-D

最佳答案

首先把你的代码改成这样

public class Movie
{
int ID{ get; set; }
string MovieName {get; set; }
List<Actor> Actors {get; set; }
}

public class Actor
{
int ID{get;set}
string ActorName{ get; set }
Movie Movie{ get; set; }
int MovieID{ get; set; }
}

通过 convention EF 会知道 MovieIDMovie

的外键

然后将 Actor 代码更改为:

public class Actor
{
int ID{get;set}
string ActorName{ get; set; }
Movie Movies{ get; set; }
}

Actor 出现在许多电影中。电影有很多 Actor .... :-)

但是回到你的一对多,其中一个 Actor 只出现在一部电影中 - 如果你真的希望外键是 Move_ID 那么添加一个 data annotation :

[ForeignKey("Move_ID")]
Movie Movie{ get; set; }

或使用 FluentAPI 配置它

   modelBuilder.Entity<Actor>()
.HasRequired(c => c.Movie)
.WithMany(d => d.Actors)
.HasForeignKey(c => c.Move_ID);

关于c# - Code First Entity Framework 和外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20001995/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com