首页 > 解决方案 > 为什么应用程序不使用我的连接字符串?

问题描述

问题。
为什么应用程序不使用我的连接字符串?  

使用者:

描述。
 我将连接字符串传递给
с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();
        }
    }
}

  安装实体框架 在此处输入图像描述

数据库NORTHWINDC.MDF 在此处输入图像描述

数据库WpfAppFrm.ProductContext 在此处输入图像描述

调试应用程序的结果。 在此处输入图像描述

申请结果。
在此处输入图像描述

应用程序树。
在此处输入图像描述

标签: c#wpfentity-framework

解决方案


而不是像这里那样拥有存储连接字符串的属性

public string ConnectionString_test { get; set; }
public ProductContext(string сonnectionString)
{
    this.ConnectionString_test = сonnectionString;
}

您需要将连接字符串传递给DbContext实际使用它的基本构造函数

public ProductContext(string сonnectionString) : base(connectionString)
{
}

推荐阅读