术语“在构建时不知道实体类型时可以使用DBset”是什么意思?

时间:2014-01-20 06:48:12

标签: c# entity-framework

术语是什么意思

  

在构建时不知道实体类型时可以使用DBset

在这句话中:

  

DBSet类表示用于创建,读取,更新和删除操作的实体集。在构建时不知道实体类型时,可以使用通用版本的DBSet(DbSet)。

2 个答案:

答案 0 :(得分: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用户和评论。您现在可以使用两个DbSets的通用存储库,而不是创建存储库UserRepository和CommentRepository:

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来解决)。

答案 1 :(得分:0)

我不知道您的确切上下文,但您可以通过使用DbSet来使用泛型类型。

更多信息here