c# - 为什么应用程序不使用我的连接字符串?
问题描述
问题。
为什么应用程序不使用我的连接字符串?
使用者:
- 服务器 - (LocalDB)\MSSQLLocalDB;
- 实体框架(EF);
WPF 框架。
目标。
使应用程序与数据库一起工作NORTHWINDC.MDF
。
描述。
我将连接字符串传递给
сonnectionStringStart = @" Data Source = (localdb)\mssqllocaldb; Initial Catalog = NORTHWINDC.MDF; Integrated Security = True; MultipleActiveResultSets = True ";
类的构造函数
class ProductContext: DbContext
。
我正在运行应用程序。
我得到一个连接字符串:
Data Source=(localdb)\mssqllocaldb;Initial Catalog=WpfAppFrm.ProductContext;Integrated Security=True;MultipleActiveResultSets=True
结果。
应用程序创建数据库WpfAppFrm.ProductContext
,并且每次运行时都与数据库一起工作WpfAppFrm.ProductContext
。
类别.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; }
}
}
主窗口.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();
}
}
}
解决方案
而不是像这里那样拥有存储连接字符串的属性
public string ConnectionString_test { get; set; }
public ProductContext(string сonnectionString)
{
this.ConnectionString_test = сonnectionString;
}
您需要将连接字符串传递给DbContext
实际使用它的基本构造函数
public ProductContext(string сonnectionString) : base(connectionString)
{
}
推荐阅读
- google-data-studio - Filter record based on most recent record for Each ID in Google Data Studio
- mysql - How to add missing trailing slash on all links (WPCLI or MySQL)
- c# - Run Visual Studio project in VS Code
- python - Byte slicing using brackets for unpack
- axios - axios retry on error code response with delay
- python - GraphView边缘过滤器与顶点过滤后的原始Graph相同
- angular8 - Angular 8 : No provider for HttpClient in service
- javascript - How to get back all the data after alert box?
- php - 带有条件的 PHP SQL SUM 列
- jquery - 尝试使用 Jquery 在单击时获取孩子的父数据 ID