Уровень персистентности ядра .net - PullRequest
0 голосов
/ 04 октября 2018

я создаю приложение Net Core и создаю свой DAL

 public class DAL
{
    private readonly IConfiguration config;

    private DAL(IConfiguration config)
    {
        this.config = config;
    }

    public List<Uservaluesfull> GetUservalues(string SID)
    {
        string PathwayConnString = config.GetConnectionString("PathwayConnString");

        //var SID = user.FindFirst("onprem_sid")?.Value;
        List<Uservaluesfull> values = new List<Uservaluesfull>();
        using (SqlConnection myConnection = new SqlConnection(PathwayConnString))
        {
            SqlCommand myCommand = new SqlCommand("usp_GetUserInfo", myConnection);
            myCommand.CommandType = CommandType.StoredProcedure;
            SqlParameter SIDParameter = myCommand.Parameters.Add("SID", SqlDbType.NVarChar, 100);
            SIDParameter.Value = SID;

            myConnection.Open();

            using (SqlDataReader oReader = myCommand.ExecuteReader())
            {
                while (oReader.Read())
                {
                    Uservaluesfull s = new Uservaluesfull();
                    DATA here

                    values.Add(s);
                }
                myConnection.Close();
            }
        }
        return values;

    }

пока все хорошо, но когда я пытаюсь использовать свой DAL из моего контроллера, я получаю эту ошибку

 public class UserValuesController : Controller
{

    [HttpGet("[action]")]
    public List<Uservaluesfull> Get()
    {            
        var SID = User.FindFirst("onprem_sid")?.Value;
        return new **DAL.**GetUservalues(SID);
    }


}

по возвращении я получаю Имя типа GetuserValues ​​не существует для типа DAL

Любые идеи, где я не прав

1 Ответ

0 голосов
/ 04 октября 2018

Написать открытый конструктор для класса DAL.

public class DAL
{
    private readonly IConfiguration config;

    public DAL(IConfiguration config)
    {
        this.config = config;
    }

    public List<Uservaluesfull> GetUservalues(string SID)
    {
        string PathwayConnString = config.GetConnectionString("PathwayConnString");

        //var SID = user.FindFirst("onprem_sid")?.Value;
        List<Uservaluesfull> values = new List<Uservaluesfull>();
        using (SqlConnection myConnection = new SqlConnection(PathwayConnString))
        {
            SqlCommand myCommand = new SqlCommand("usp_GetUserInfo", myConnection);
            myCommand.CommandType = CommandType.StoredProcedure;
            SqlParameter SIDParameter = myCommand.Parameters.Add("SID", SqlDbType.NVarChar, 100);
            SIDParameter.Value = SID;

            myConnection.Open();

            using (SqlDataReader oReader = myCommand.ExecuteReader())
            {
                while (oReader.Read())
                {
                    Uservaluesfull s = new Uservaluesfull();
                    DATA here

                    values.Add(s);
                }
                myConnection.Close();
            }
        }
        return values;

    }
}

Контроллер будет похож на.

public class UserValuesController : Controller
{
    private readonly DAL _dal;
    public UserValuesController(DAL dal)
    {
        _dal = dal;
    }

    [HttpGet("[action]")]
    public List<Uservaluesfull> Get()
    {            
        var SID = User.FindFirst("onprem_sid")?.Value;
        return new _dal.GetUservalues(SID);
    }
}

Также создайте интерфейс IDAL.

public interface IDAL
{
    List<Uservaluesfull> GetUservalues(string SID);
}

Тогда,добавьте их в класс запуска.

public IServiceProvider ConfigureServices(IServiceCollection services)
{
    services.AddTransient<IDAL, DAL>();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...