为什么需要使用 OnModelCreating (首先是 MVC 5 EF 代码)?

Lir*_*ran 2 asp.net-mvc asp.net-mvc-5

我不明白使用函数的原因是什么OnModelCreating

当我可以做类似的事情时

[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Int Id { get; set; }

public Int LanguageId { get; set; }
[ForeignKey("LanguageId")]

public Language Language { get; set; }
Run Code Online (Sandbox Code Playgroud)

也许我错了,但是当我读到这一点时,它被解释为它是针对多对多关系的。那么为什么不做这样的事情呢。

ICollection<User> Users
Run Code Online (Sandbox Code Playgroud)

Raj*_*put 5

为了建立实体之间的关系,我们有两种选择

  1. DataAnnotation(您正在使用的)
  2. 流畅的 API。

当我们使用 Fluent API 时,我们需要在此OnModelCreating(DbModelbuilder modelbuilder)方法中指定我们的关系。因此,当第一次创建模型时,它们应该维护实体之间的关系。

下面的代码 snnipet 给出了使用此方法的常见示例

modelBuilder.Entity<Department>().Property(t => t.Name).HasMaxLength(50);
Run Code Online (Sandbox Code Playgroud)

使用数据注释属性可以实现相同的效果。

[MaxLength(50)]
public string Name {get;set;}
Run Code Online (Sandbox Code Playgroud)

因此,如果您不想使用 DataAnotation,请使用 Fluent API 来满足您的目的。