0

asp.net のこのチュートリアルに従って、次のコードを示します。

using System;
using ContosoUniversity.Models;

namespace ContosoUniversity.DAL
{
    public class UnitOfWork : IDisposable
    {
        private SchoolContext context = new SchoolContext();
        private GenericRepository<Department> departmentRepository;
        private GenericRepository<Course> courseRepository;

        public GenericRepository<Department> DepartmentRepository
        {
            get
            {

                if (this.departmentRepository == null)
                {
                    this.departmentRepository = new GenericRepository<Department>(context);
                }
                return departmentRepository;
            }
        }

        public GenericRepository<Course> CourseRepository
        {
            get
            {

                if (this.courseRepository == null)
                {
                    this.courseRepository = new GenericRepository<Course>(context);
                }
                return courseRepository;
            }
        }

        public void Save()
        {
            context.SaveChanges();
        }

        private bool disposed = false;

        protected virtual void Dispose(bool disposing)
        {
            if (!this.disposed)
            {
                if (disposing)
                {
                    context.Dispose();
                }
            }
            this.disposed = true;
        }

        public void Dispose()
        {
            Dispose(true);
            GC.SuppressFinalize(this);
        }
    }
}

新しいデータベース テーブルを追加するたびにコードを記述する必要がありますか? たとえば、StudentsRepository を追加したい場合は、次のようにする必要があります (?):

private GenericRepository<Student> studentRepository;

public GenericRepository<Student> StudentRepository
{
    get
    {

        if (this.studentRepository == null)
        {
            this.studentRepository = new GenericRepository<Student>(context);
        }
        return studentRepository;
    }
}

データベースに 50 個のテーブルがある場合はどうなりますか? 50 個すべてに対してこのコードを作成する必要がありますか?

4

1 に答える 1

0

あなたの質問に対する答えは「はい」です。作業単位には、可能なすべてのリポジトリにアクセスするためのプロパティが含まれている必要があります。

コードを書くのが面倒な場合は、T4 テンプレートを作成し、クラスを自動生成させます。

于 2013-09-16T16:42:45.197 に答える