C# 指定带有数据注释的外键

C# 指定带有数据注释的外键,c#,asp.net-mvc,entity-framework,data-annotations,C#,Asp.net Mvc,Entity Framework,Data Annotations,我首先使用最新版本的ASP.NET实体框架代码 如果我有两门课,如下所示: public class Student { public int ID { get; set; } } public class Classroom { public int ID { get; set; } public Student Student { get; set; } } 是否有一种方法可以让我使用数据注释,以便在生成教室表时,它知道我希望教室中存在一个名为StudentID的

我首先使用最新版本的ASP.NET实体框架代码

如果我有两门课,如下所示:

public class Student
{
    public int ID { get; set; }
}

public class Classroom
{
    public int ID { get; set; }
    public Student Student { get; set; }
}

是否有一种方法可以让我使用数据注释,以便在生成教室表时,它知道我希望教室中存在一个名为StudentID的ForeignKey?我知道如何使用FluentAPI,但是如果我可以使用数据注释来完成,那么我的应用程序就会简单得多。我还希望避免在实际对象模型中使用单独的StudentID属性,因为它似乎是重复的。

但这使用了显式的int StudentID属性-这似乎是不必要的-是否有办法使用它或者我应该使用它的原因?请参阅我上面的评论。EF代码首先必须猜得越少,提供的信息越多。想想看……它是一个Id属性,您正在处理数据库关系……它是基本的,不是不必要的绒毛。:)在建立关系时,重复性是实体框架中的一种方式。按照EF大师Julie Lerman的说法,最好同时拥有一个ID和一个对象。也许其他人可以对“为什么”发表评论。我在某个地方读到EF做了一些事情来保持这两个我也是同步的-你知道这方面的细节吗?它是在setter中完成的还是仅在提交对数据库的更改时完成的?
public class Student
{
public int ID { get; set; }
}

public class Classroom
{
public int ID { get; set; }
public Student Student { get; set; }

[ForeignKey("Student")]
public int StudentId {get; set;}



}