【发布时间】:2011-11-10 16:04:02
【问题描述】:
在我的 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。
正确的做法是什么,以便我的模型可以,嗯,(不确定这是否是正确的词)fake-able 用于单元测试?
【问题讨论】:
标签: c# asp.net asp.net-mvc asp.net-mvc-3 dependency-injection