0

EF Power Tools を使用して、既存のデータベースからモデルを自動生成しました。DataAnnotations を使用して必要な検証を実行します。これは、他のテーブルとの外部キー関係 (1 対多など) を持つプロパティを検証する場合を除いて、ほとんどの部分で機能します。これらのプロパティの検証を完了するには、何をする必要がありますか?

以下のコードでは、DistributorId プロパティを必須フィールドにしようとしています。

 public class Event
{
    public Event()


    public int EventId { get; set; }
    [Remote ("CheckDuplicateEventName","Event",AdditionalFields="InsertMode")]
    [Required(ErrorMessage = "Event Name is required.")]
    public string Name { get; set; }

    [Required(ErrorMessage = "Distributor is required.")]
    public int DistributorId { get; set; }

    public virtual Distributor Distributor { get; set; }

}

マッピング クラス

 public EventMap()
    {
        // Primary Key
        this.HasKey(t => t.EventId);

        // Properties
        this.Property(t => t.Name)
            .IsRequired()
            .HasMaxLength(256);

        // Table & Column Mappings
        this.ToTable("Events");
        this.Property(t => t.EventId).HasColumnName("EventId");
        this.Property(t => t.Name).HasColumnName("Name");
        this.Property(t => t.DistributorId).HasColumnName("DistributorId");

        // Relationships
        this.HasRequired(t => t.Distributor)
            .WithMany(t => t.Events)
            .HasForeignKey(d => d.DistributorId);


    }

Tnx!

4

1 に答える 1

2

これは非常に単純です。これはName( stringnull 可能) であり、一方(null 可能でDistributorIdintない) であるためです。つまり、DistributorId常に存在することを意味します (ただし、探している値ではない可能性がありますが、[Required]検証は満たされています。

おそらく変更したいのは、

  • [Required]実際の値を検証するものに置き換えるかは、ここでの[Range]良い例です。
  • またはDistributorId、データベースに書き込む前に文字列として int に変換します。

お役に立てれば

于 2012-08-23T23:54:51.880 に答える