2014-01-20 2 views
2

Что подразумевается под терминомЧто подразумевается под термином «DBset можно использовать, когда тип объекта неизвестен во время сборки»?

DBset может быть использован, если тип объекта не известно, во время сборки

в этом предложении:

класс DBSet представляет объект который используется для создания, чтения, обновления и удаления. Общая версия DBSet (DbSet) может использоваться, когда тип объекта неизвестен во время сборки.

ответ

1

Предположим, вы хотите создать репозиторий для упрощения доступа к данным, но вы не хотите создавать отдельный репозиторий для каждого DBSet (или таблицы в вашей базе данных), который у вас есть. Вместо этого вы можете создать общий репозиторий и после инициализации этого объекта репозитория вы можете добавить информацию, которую DBSet вы хотите адресовать с этим объектом репозитория.

репозиторий будет выглядеть примерно так

public class Repository<T> where T : EntityObject 
{ 
    public Repository(YourDBContext context) { 
     _context = context; 
     if(_context != null) 
     { 
      _dbSet = _context.Set<T>(); 
     } 
    } 

    /* add methods for insert, update, delete, etc... */ 

    private YourDBContext _context; 
    private DBSet<T> _dbSet; 
} 

Так, например, у вас есть DbSets пользователя и комментарий. Вместо создания репозиториев UserRepository и CommentRepository теперь вы можете использовать общий репозиторий для обоих DbSets:

using(YourDBContext context = new YourDBContext()) 
{ 
    Repository<User> userRepo = new Repository<User>(contex); 
    userRepo.Insert(userEntity); 
    Repository<Comment> commentRepo = new Repository<Comment>(context); 
    commentRepo.Delete(commentEntity); 
} 

Конечно, если есть больше в хранилище шаблон, но это лишь в качестве примера. И чтобы подвести итог вашему вопросу, что такое предложение: если вы хотите обобщить, какой DbSet вы хотите адресовать с классом, вы можете сделать класс обобщенным и добавить информацию (о которой DbSet для адресации) позже во время выполнения.

0

Я не знаю вашего точного контекста этого сообщения, но вы можете это сделать, используя DbSet, чтобы использовать общий тип.

Дополнительная информация here.

+0

Спасибо .. Но я хочу знать, что означает время сборки в этом предложении: DBset может использоваться тип сущности, неизвестный во время сборки – pejman

+0

Это означает, что он может позволить вам указать динамические типы для использования в качестве юридические лица. Я никогда не пробовал это, и я думаю, вам также нужно создать собственный dbcontext, который происходит из DbContext и в OnModelCreating. Я нашел дополнительную информацию [здесь] (http://romiller.com/2012/03/26/dynamically-building-a-model-with-code-first/). –

Смежные вопросы