Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Why am I getting "is inaccessible due to its protection leve

  1. Jan 28, 2016 #1
    Visual Studio is giving me the error

    Error 1 'System.Data.Entity.DbSet<Survey.Models.Survey>.DbSet()' is inaccessible due to its protection level c:\users\jamin\documents\visual studio 2013\Projects\Survey\Survey\Models\SurveyDbModel.cs 83 40 Survey

    on the line

    Code (C):

    DbSet<Survey> AllSurveys = new DbSet<Survey>();
     
    of

    Code (C):

    using System;
    using System.Data.Entity;
    using System.ComponentModel.DataAnnotations;
    using System.Data.SqlClient;
    using System.Configuration;
    using System.Data;

    namespace Survey.Models
    {

        public class Survey
        {
            public int Id { get; set; }
            [StringLength(100)]
            public string Title { get; set; }
        }

        public class Parnter
        {
            public int Id { get; set;}
            [StringLength(50)]
            public string Name { get; set; }
        }

        public class Question
        {
            public int Id { get; set; }
            public int SurveyId { get; set; }
            [StringLength(300)]
            public string QText { get; set; }
        }

        public class Answer
        {
            public int Id { get; set; }
            public int QuestionId { get; set; }
            public int PartnetId { get; set; }
            public decimal Val { get; set; }
        }

        public class SurveyDbModel
        {
            // name of connection string for database that
            private static readonly string _ConnStrName = "LocalDb";

            private SqlConnection _Conn;

            public SurveyDbModel ( )
            {
                this._Conn = new SqlConnection(ConfigurationManager.ConnectionStrings[SurveyDbModel._ConnStrName].ConnectionString);
            }

            ~SurveyDbModel ( )
            {
                this._Conn.Dispose();
            }

            public void AddSurvey ( string survtitle )
            {
                SqlCommand cmd = new SqlCommand("AddSurvey", this._Conn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@title", survtitle);
                this._Conn.Open();
                cmd.ExecuteNonQuery();
                this._Conn.Close();
            }

            public void DeleteSurvey ( int survid )
            {
                SqlCommand cmd = new SqlCommand("DeleteSurvey", this._Conn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@id", survid);
                this._Conn.Open();
                cmd.ExecuteNonQuery();
                this._Conn.Close();
            }

            public DbSet<Survey> GetAllSurveys ( )
            {
                SqlCommand cmd = new SqlCommand("GetAllSurveys", this._Conn);
                cmd.CommandType = CommandType.StoredProcedure;
                this._Conn.Open();
                DbSet<Survey> AllSurveys = new DbSet<Survey>();
                using ( SqlDataReader dataReader = cmd.ExecuteReader() )
                {
                    while ( dataReader.Read() )
                    {
                        Survey srv = new Survey
                        {
                            Id = int.Parse(dataReader[0].ToString()),
                            Title = dataReader[1].ToString()
                        };
                        AllSurveys.Add(srv);
                    }
                }
                this._Conn.Close();
                return AllSurveys;
            }

            public DbSet<Question> GetQuestionsBySurveyId ( int survid )
            {
                SqlCommand cmd = new SqlCommand("GetQuestionsBySurveyId", this._Conn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@id", survid);
                this._Conn.Open();
                DbSet<Question> TheseQuestions = (DbSet<Question>)cmd.ExecuteScalar();
                this._Conn.Close();
                return TheseQuestions;
            }

        }
    }
     
    Any idea why? Personally, I can't see how any access modifiers are getting in the way of me creating a DbSet<T> where T is a Survey.
     
  2. jcsd
  3. Jan 28, 2016 #2

    fresh_42

    Staff: Mentor

    Looks like an access problem on the OS level. Check you're Windows rights in the folder.
     
  4. Jan 28, 2016 #3

    Borg

    User Avatar
    Gold Member

    Just checking the obvious - that is your user directory, correct?
     
  5. Jan 28, 2016 #4

    fresh_42

    Staff: Mentor

    Another possibility is that you might need and have forgotten a DB sign-on.
     
  6. Jan 28, 2016 #5
    I think it's because the constructor of DbSet<T> is protected and so its instance in this case should be created from the context object.
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook




Similar Discussions: Why am I getting "is inaccessible due to its protection leve
  1. Why Watson its Google! (Replies: 2)

Loading...