通用存储库,CreateObjectSet <t>()方法

时间:2016-05-15 15:28:16

标签: c# asp.net entity-framework asp.net-web-api repository-pattern

我正在尝试实现一个通用存储库,我现在就拥有它:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Data;
using System.Data.Entity.Core.Objects;
using Web_API.Models;

namespace Web_API.DAL
{
    class GenericRepository<T> : IRepository<T> where T : class
    {
        private ApplicationDbContext entities = null;
        IObjectSet<T> _objectSet;

        public GenericRepository(ApplicationDbContext _entities)
        {
            entities = _entities;
            _objectSet = entities.CreateObjectSet<T>();
        }

        ...

我在使用此方法时遇到问题:                       entities.CreateObjectSet<T>(); 它应该没问题,但是我收到了这个错误:

enter image description here

我已经将System.Data.Entity添加到我的项目中,此时我不知道还能做什么。我正在关注本教程http://www.codeproject.com/Articles/770156/Understanding-Repository-and-Unit-of-Work-Pattern。有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

您需要将方法更改为:

public GenericRepository(ApplicationDbContext _entities)
{
    entities = _entities;
    _objectSet = entities.Set<T>(); //This line changed.
}

这应该具有您想要的功能。 .Set<T>()是返回所用类型的DbSet的通用方法。

更新:

如果返回类型发生变化,您还需要更改_objectSet类型。

DbSet<T> _objectSet;