C# webフォーム今日のエラー プロパティの属性 [StringLength(50)]//属性

EntityFrameWorkの勉強中。
エンティクラスを本のとおりに書いていると書籍の名称は、ASP.NET Webフォームアプリ開発C#対応版 秀和システム

[StringLength(50)]//属性

コーディング本のあるあるである。本のとおりにコードを書いてもエラーがでまくりでうまく動かせない。
いまはネットがあるのでまだましだ。

以下のエラーが発生した
重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態
エラー CS0246 型または名前空間の名前 ‘StringLength’ が見つかりませんでした (using ディレクティブまたはアセンブリ参照が指定されていることを確認してください)。 EntityFrame C:\Users\mased\source\repos\EntityFrame\EntityFrame\Department.cs 15 アクティブ

重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態
エラー CS0246 型または名前空間の名前 ‘StringLengthAttribute’ が見つかりませんでした (using ディレクティブまたはアセンブリ参照が指定されていることを確認してください)。 EntityFrame C:\Users\mased\source\repos\EntityFrame\EntityFrame\Department.cs 15 アクティブ

対策としてはネットでC# プロパティ 属性で探した
using System.ComponentModel.DataAnnotations;//これがないと属性でエラーになる
追記するとエラーが消えた

P239-240

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
//using System.Reflection;
//using System.ComponentModel;
using System.ComponentModel.DataAnnotations;//これがないと属性でエラーになる

namespace EntityFrame
{
    //[AttributeUsage(AttributeTargets.Property)]//ネットで探してプロパティに属性をつけるらしい
    public class Department
    {
        public int DepartmentId { get; set; }
       [StringLength(50)]//属性。ヘッダー(?コンポーネット? ディレクティブというらしい。System.ComponentModel.DataAnnotationsがないとエラーになる
        public string Name { get; set; }
        public virtual ICollection<Employee> Employee { get; set; }

    }
}