В моем проекте ASP.NET MVC 3 я реализовал шаблон хранилища внутри отдельного проекта библиотеки классов.
Также я использую EF в качестве ORM. Я также реализовал проверку некоторых моделей с помощью интерфейса IValidatableObejct
. Вот как это выглядит:
[MetadataType(typeof(AccommPropertySeasonPeriodAlias.MetaData))]
public partial class AccommPropertySeasonPeriodAlias : IValidatableObject {
private class MetaData {
[StringLength(5), Required]
[Display(Name = "Period Alias Name")]
public string AccommPropertySeasonPeriodAlias1 { get; set; }
}
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) {
var repo = new AccommPropertySeasonPeriodAliasRepository();
if (repo.GetAll(this.AccommPropertySeasonID).
Where(x => x.AccommPropertySeasonPeriodAlias1 == this.AccommPropertySeasonPeriodAlias1) != null)
yield return new ValidationResult("Alias Name needs to be unique");
}
}
Как видите, с этого момента моя модель полностью тесно связана, потому что я использовал AccommPropertySeasonPeriodAliasRepository
класс напрямую вместо IAccommPropertySeasonPeriodAliasRepository
.
Как это сделать правильно, чтобы моя модель могла, ну, (не уверен, что это правильное слово) подделка для модульного тестирования?