I am trying to get a Connection String set up in my .Net Core application but i keep getting the error:
System.NullReferenceException: ‘Object reference not set to an instance of an object.’
I have tried adding the following to appsettings.json:
"ConnectionStrings": {
"Analysis": "Server=DESKTOP-MYSERVER;Database=MYDATABASE;User Id=sa; Password=Password123;Provider=System.Data.SqlClient;Trusted_Connection=True;MultipleActiveResultSets=true;Pooling=false;"
}
I also tried using web.config like I used to before .Net Core:
<connectionStrings>
<add name="Analysis" providerName="System.Data.SqlClient"
connectionString="Server=DESKTOP-MYSERVER;Database=MYDATABASE;User Id=sm;Password=Password123;"/>
Then in c# i have:
public List<DapperTest> ReadAll()
{
var data = new List<DapperTest>();
using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["Analysis"].ConnectionString))
{
data = db.Query<DapperTest>("select * from testTable").ToList();
}
return data;
}
Both ways give me the exception of:
System.NullReferenceException: ‘Object reference not set to an instance of an object.’
I have used the following resources:
.Net CORE Dapper Connection String?
https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/intro
Get connection string from App.config
But I am missing something. I have only set up connection strings once and it was not in .Net Core so it could be obvious to others.
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
If you are using appsettings.json, create a simple POCO class to model your connection string configurations like this:
public class ConnectionConfig
{
public string Analysis {get;set;}
}
Add this line in ConfigureServices method in Startup.cs
services.Configure<ConnectionConfig>(Configuration.GetSection("ConnectionStrings"));
Data service class
class YourClass{
private string _connectionString;
YourClass(string connectionString){
_connectionString = connectionString;
}
//Your implementation
public List<DapperTest> ReadAll()
{
var data = new List<DapperTest>();
using (IDbConnection db = new SqlConnection(_connectionString)
{
data = db.Query<DapperTest>("select * from testTable").ToList();
}
return data;
}
}
Inject IOptions<ConnectionConfig> in your controller constructor .
class YourController : Controller{
YourClass _testing;
YourController(IOptions<ConnectionConfig> connectionConfig){
var connection = connectionConfig.Value;
string connectionString = connection.Analysis;
_testing = new YourClass(connectionString );
}
public IActionResult Index() {
var testingData = _testing.ReadAll();
return View();
}
}
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0