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

时间:2016-12-01 11:30:52

标签: 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; }

也许我错了,但当我读到这篇文章时,它被解释为多对多关系。 所以为什么不做这样的事呢。

ICollection<User> Users

1 个答案:

答案 0 :(得分:4)

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

  1. DataAnnotation(您正在使用的)
  2. Fluent API。
  3. 当我们使用流畅的API时,我们需要在这个OnModelCreating(DbModelbuilder modelbuilder)方法中指定我们的关系。所以当第一次创建模型时,它们应该维护实体之间的关系。

    使用此方法的常见示例在下面的代码snnipet

    中给出
    modelBuilder.Entity<Department>().Property(t => t.Name).HasMaxLength(50);
    

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

    [MaxLength(50)]
    public string Name {get;set;}
    

    因此,如果您不想使用DataAnotation使用Fluent API来实现您的目的。