Entity Framework Code First 数据注释 MaxLength 和 Table 不工作

Entity Framework Code First Data Annotation MaxLength and Table Not Working

我使用 Code First 方法从我的模型创建我的数据库,我在我的 class 中使用数据注释,如下所示:

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

[Table("Cat1")]
public class Cat
{
    public int ID { get; set; }
    [Required]
    [MaxLength(50)]
    public string Nombre { get; set; }
    [StringLength(500)]
    public string Descripción { get; set; }
}

using System.Data.Entity;
public class Contexto: DbContext  {
    public DbSet<Cat> Cats { get; set; }
    protected override void OnModelCreating(DbModelBuilder MB) {
        MB.Conventions.Remove<PluralizingTableNameConvention>();
        MB.Conventions.Remove<OneToManyCascadeDeleteConvention>();
        MB.Conventions.Remove<ForeignKeyIndexConvention>();
        MB.Conventions.Remove<ManyToManyCascadeDeleteConvention>();
        MB.ComplexType<Departamento>(); 
        MB.ComplexType<Porción>();
    }
}

但由于某些原因,只应用了 [Required] 和 [StringLength] 注释。我的数据库是这样结束的:

TABLE [dbo].[Cats] (
    [ID]          INT            IDENTITY (1, 1) NOT NULL,
    [Nombre]      NVARCHAR (MAX) NOT NULL,
    [Descripción] NVARCHAR (500) NULL,
    CONSTRAINT [PK_dbo.Cats] PRIMARY KEY CLUSTERED ([ID] ASC)
);

我想知道为什么有些注释有效而有些却无效。我知道我可以使用 'StringLength' 而不是 'MaxLength',但是对于 'Table' 和其他一些可能有相同问题的人我没有其他选择。它曾经可以正常工作一段时间,但突然停止工作。如何使 'MaxLenght' 和 'Table' 注释再次起作用?编辑:其他注释不起作用:ComplexType 和 NotMapped。

我正在使用 EF 6.1.3 和 targetframework net40 和 Visual Studio 2017。

谢谢!

因此,经过许多小时后,我决定从头开始整个项目。这次我唯一不同的是在每个项目开始时指定 .Net Framework 4.0,然后再添加任何引用或 NuGet 包。我认为上次我手动移动了很多东西,最终导致混淆 visual studio,对于智能感知来说很好 Table,ComplexType 和 NotMaped 注释但实际上没有应用。