Reputation: 327
Question.
Why is the application not using my connection string?
Used by:
WPF Framework.
Goal.
Make the application work with the database NORTHWINDC.MDF
.
Description.
I am passing a connection string
сonnectionStringStart = @" Data Source = (localdb)\mssqllocaldb; Initial Catalog = NORTHWINDC.MDF; Integrated Security = True; MultipleActiveResultSets = True ";
into the constructor of the class
class ProductContext: DbContext
.
I am running the application.
I get a connection string:
Data Source=(localdb)\mssqllocaldb;Initial Catalog=WpfAppFrm.ProductContext;Integrated Security=True;MultipleActiveResultSets=True
Result.
The application creates the database WpfAppFrm.ProductContext
and each time it runs it works with the databaseWpfAppFrm.ProductContext
.
Category.cs
//
using System.Collections.ObjectModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace WpfAppFrm
{
[Table("Categories")]
public class Category
{
public Category()
{
// this.Products = new ObservableCollection<Product>();
}
public int CategoryId { get; set; }
public string Name { get; set; }
// public virtual ObservableCollection<Product> Products { get; private set; }
}
}
ProductContext.cs
using System.Data.Entity;
namespace WpfAppFrm
{
public class ProductContext : DbContext
{
// public ProductContext() : base("DefaultConnection")
public string ConnectionString_test { get; set; }
public ProductContext(string сonnectionString)
{
this.ConnectionString_test = сonnectionString;
}
public DbSet<Category> Categories { get; set; }
// public DbSet<Product> Products { get; set; }
}
}
MainWindow.xaml.cs
//
using System.ComponentModel;
using System.Data.Entity;
namespace WpfAppFrm
{
/// <summary>
/// Логика взаимодействия для MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public static string сonnectionStringStart;
private ProductContext _context;
public MainWindow()
{
InitializeComponent();
сonnectionStringStart = @"Data Source=(localdb)\mssqllocaldb;Initial Catalog=NORTHWINDC.MDF;Integrated Security=True;MultipleActiveResultSets=True";
_context = new ProductContext(сonnectionStringStart);
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
try
{
System.Windows.Data.CollectionViewSource categoryViewSource =
((System.Windows.Data.CollectionViewSource)(this.FindResource("categoryViewSource")));
_context.Categories.Load();
BindingList<Category> _studBindList = _context.Categories.Local.ToBindingList();
categoryViewSource.Source = _context.Categories.Local;
AddEntity();
// GetAll();
string сonnectionStringStartDuplicate = сonnectionStringStart;
string connectionStringResult1 = _context.Database.Connection.ConnectionString;
string connectionStringResult2 = _context.ConnectionString_test;
}
catch (Exception ex)
{
throw;
}
}
public void AddEntity()
{
Category category = new Category
{
Name = "Name_Category_4"
};
_context.Categories.Add(category);
string connectionString_str = _context.Database.Connection.ConnectionString;
_context.SaveChanges();
}
public void GetAll()
{
_context.Categories.Load();
BindingList<Category> _studBindList = _context.Categories.Local.ToBindingList();
}
}
}
Installing the Entity Framework
Database WpfAppFrm.ProductContext
The result of debugging the application.
The result of the application.
Upvotes: 0
Views: 110
Reputation: 6162
Instead of having property to store connection string like here
public string ConnectionString_test { get; set; }
public ProductContext(string сonnectionString)
{
this.ConnectionString_test = сonnectionString;
}
you need to pass connection string to the base constructor of DbContext
, which actually uses it
public ProductContext(string сonnectionString) : base(connectionString)
{
}
Upvotes: 2