MUG4Nが答えたように、部分クラスを使用できますが、代わりにインターフェースを使用する方がよいでしょう。この場合、EF モデルが検証モデルに対応していないと、コンパイル エラーが発生します。そのため、検証ルールが時代遅れになることを心配することなく、EF モデルを変更できます。
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace YourApplication.Models
{
public interface IEntityMetadata
{
[Required]
Int32 Id { get; set; }
}
[MetadataType(typeof(IEntityMetadata))]
public partial class Entity : IEntityMetadata
{
/* Id property has already existed in the mapped class */
}
}
PS ASP.NET MVC とは異なるプロジェクト タイプを使用している場合 (手動でデータ検証を実行する場合)、バリデーターを登録することを忘れないでください。
/* Global.asax or similar */
TypeDescriptor.AddProviderTransparent(
new AssociatedMetadataTypeTypeDescriptionProvider(typeof(Entity), typeof(IEntityMetadata)), typeof(Entity));