使用依赖注入到延迟加载域模型属性

时间:2015-06-03 00:18:40

标签: c# asp.net dependency-injection ninject repository-pattern

我目前正在使用存储库模式,其中我的数据模型位于返回我的域模型的存储库后面。我正在使用依赖注入来完成所有这些。我的问题是,假设我有一个我从StudentRepository获得的域模型学生。学生可能拥有我在某些地方使用的属性,而不是其他地方,例如,课程:

public class Student
{
    public int ID { get; private set; }
    public string Name { get; private set; }

    public Student(int id, string name, IEnumberable courses = null)
    {
        ID = id;
        Name = name;
        _courses = courses;
    }

    private IEnumerable<Course> _courses;

    public IEnumerable<Course> Courses()
    {
        if(_courses == null)
        {
            // I need a good way to load the CourseRepository
            _courses = CourseRepository.GetCoursesByStudentID(ID);
        }

        return _courses;
    }
}

因此,我想要这种类型的延迟加载设置,但我不知道如何优雅地完成它,并且我很难理解如何加载CourseRepository(或使用DI的ICourseRepository)的实现,其中我的存储库看起来像:

public class CourseRepository : ICourseRepository
{
    private DbContext _db;

    public CourseRepository(DbContext db)
    {
        _db = db;
    }

    public IEnumerable<DomainModels.Course> GetCoursesByStudentID(int studentID)
    {
        return CourseFactory.Build(_db.Courses.Where(c=>c.StudentID == studentID));
    }
}

这对答案来说并不重要,但如果解决方案与Ninject有关,那将会有所帮助,因为这是我当前的DI容器。

0 个答案:

没有答案