The error message "Keyword not supported: 'metadata'" typically occurs when using a connection string intended for Entity Framework's `DbContext` in a context that expects a standard ADO.NET connection string. To resolve this, you need to use a different type of connection string for ADO.NET or modify your existing connection string accordingly.
Here’s how you can address this issue:
1. Understanding the Connection Strings
Entity Framework Connection String
The connection string you have is suitable for Entity Framework:
<add name="BajajTMSResultMasterEntities"
connectionString="metadata=res://*/Models.BajajTMSResultMaster.csdl|res://*/Models.BajajTMSResultMaster.ssdl|res://*/Models.BajajTMSResultMaster.msl;provider=System.Data.SqlClient;provider connection string="data source=DC-SOF-001\SQLSERVER2014;initial catalog=TRAFFIC_MANAGEMENT_CDMS_RESULT_MASTER_BAJAJ;user id=sa;password=dmc@123;MultipleActiveResultSets=True;App=EntityFramework""
providerName="System.Data.EntityClient" />
ADO.NET Connection String
To use this in a non-Entity Framework context, such as standard ADO.NET, you need to extract the inner connection string from the Entity Framework connection string.
2. Extracting and Using the Correct Connection String
Here’s how you can modify your connection string for ADO.NET:
<add name="BajajTMSResultMasterEntities"
connectionString="data source=DC-SOF-001\SQLSERVER2014;initial catalog=TRAFFIC_MANAGEMENT_CDMS_RESULT_MASTER_BAJAJ;user id=sa;password=dmc@123;MultipleActiveResultSets=True;App=EntityFramework"
providerName="System.Data.SqlClient" />
3. Updating Your Code
Now, use the updated connection string in your C# code:
Using ConfigurationManager in a Console Application
1. Ensure you have the correct `using` statements:
using System;
using System.Data.SqlClient;
using System.Configuration;
2. Use the connection string to connect to your database:
static void ExecuteAndDisplayQuery()
{
// Retrieve the connection string from the configuration file
string connectionString = ConfigurationManager.ConnectionStrings["BajajTMSResultMasterEntities"].ConnectionString;
// Define your query
string query = "SELECT * FROM YourTable";
try
{
// Establish a connection with the database
using (SqlConnection connection = new SqlConnection(connectionString))
{
// Open the connection
connection.Open();
// Create a SqlCommand to execute the query
using (SqlCommand command = new SqlCommand(query, connection))
{
// Execute the query and get the results in a SqlDataReader
using (SqlDataReader reader = command.ExecuteReader())
{
// Get the number of columns
int columnCount = reader.FieldCount;
// Print the column names
for (int i = 0; i < columnCount; i++)
{
Console.Write(reader.GetName(i) + "\t");
}
Console.WriteLine();
// Print the rows
while (reader.Read())
{
for (int i = 0; i < columnCount; i++)
{
Console.Write(reader[i].ToString() + "\t");
}
Console.WriteLine();
}
}
}
}
}
catch (Exception ex)
{
// Handle exceptions
Console.WriteLine("An error occurred: " + ex.Message);
}
}
3. Call the method from your `Main` function:
static void Main(string[] args)
{
ExecuteAndDisplayQuery();
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
4. Alternative Method: Storing Connection Strings Separately
To prevent confusion, consider storing your Entity Framework and ADO.NET connection strings separately:
In Your `app.config` or `web.config`
<connectionStrings>
<add name="BajajTMSResultMasterEntities"
connectionString="metadata=res://*/Models.BajajTMSResultMaster.csdl|res://*/Models.BajajTMSResultMaster.ssdl|res://*/Models.BajajTMSResultMaster.msl;provider=System.Data.SqlClient;provider connection string="data source=DC-SOF-001\SQLSERVER2014;initial catalog=TRAFFIC_MANAGEMENT_CDMS_RESULT_MASTER_BAJAJ;user id=sa;password=dmc@123;MultipleActiveResultSets=True;App=EntityFramework""
providerName="System.Data.EntityClient" />
<add name="BajajTMSResultMasterDbConnection"
connectionString="data source=DC-SOF-001\SQLSERVER2014;initial catalog=TRAFFIC_MANAGEMENT_CDMS_RESULT_MASTER_BAJAJ;user id=sa;password=dmc@123;MultipleActiveResultSets=True;App=EntityFramework"
providerName="System.Data.SqlClient" />
</connectionStrings>
In Your C# Code
Use the appropriate connection string based on your need:
string connectionString = ConfigurationManager.ConnectionStrings["BajajTMSResultMasterDbConnection"].ConnectionString;
This approach helps you manage multiple connection strings efficiently and avoids confusion between different types of database contexts.
Conclusion
By correctly setting up and using the appropriate connection string, you can avoid errors and ensure your application connects to the database as expected. Remember to always test your connection strings and database operations thoroughly to catch any issues early in the development process.
If you like comment and share. 🚀
0 Comments