简体   繁体   English

如何连接到mdf数据库?

[英]How to connect to the mdf database?

Used by:使用人:

  • WPF Framework; WPF框架;
  • Entity Framework.实体框架。

I get _studBindList.Count = 0 .我得到_studBindList.Count = 0

How to connect to the mdf database?如何连接到mdf数据库?

Category.cs分类.cs

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产品上下文.cs

using System.Data.Entity;

namespace WpfAppFrm
{
    public class ProductContext : DbContext
    {
        // public ProductContext() : base("DefaultConnection")
        public ProductContext(string сonnectionString)
        {

        }

        public DbSet<Category> Categories { get; set; }
        // public DbSet<Product> Products { get; set; }
    }
}

MainWindow.xaml.cs主窗口.xaml.cs

//
using System.ComponentModel;
using System.Data.Entity;

namespace WpfAppFrm
{
    /// <summary>
    /// Логика взаимодействия для MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        // public static string сonnectionString = @"C:\test\DB\NorthwindC.mdf";
        public static string сonnectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\test\DB\NorthwindC.mdf;Integrated Security=True;Connect Timeout=30";
        private ProductContext _context = new ProductContext(сonnectionString);

        public MainWindow()
        {
            InitializeComponent();
        }

        private void Window_Loaded_1(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;
            }
            catch (Exception ex)
            {

                throw;
            }
        }
    }
}

MainWindow.xaml主窗口.xaml

<Window x:Class="WpfAppFrm.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfAppFrm"
        mc:Ignorable="d"
        Title="MainWindow" Height="443.317" Width="243.069" Loaded="Window_Loaded_1">
        <Window.Resources>
            <CollectionViewSource x:Key="categoryViewSource"
                                d:DesignSource="{d:DesignInstance {x:Type local:Category}, CreateList=True}"/>
            <CollectionViewSource x:Key="categoryProductsViewSource" Source="{Binding Products, Source={StaticResource categoryViewSource}}"/>
        </Window.Resources>
    <Grid DataContext="{StaticResource categoryViewSource}" Margin="0,0,28,0">
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition Width="0*"/>
            <ColumnDefinition Width="0*"/>
        </Grid.ColumnDefinitions>
        <DataGrid x:Name="categoryDataGrid" AutoGenerateColumns="False" EnableRowVirtualization="True"
                    ItemsSource="{Binding}" Margin="13,13,3,257"
                    RowDetailsVisibilityMode="VisibleWhenSelected">
            <DataGrid.Columns>
                <DataGridTextColumn x:Name="categoryIdColumn" Binding="{Binding CategoryId}"
                                    Header="CategoryId" Width="SizeToHeader"/>
                <DataGridTextColumn x:Name="nameColumn" Binding="{Binding Name}"
                                    Header="Name" Width="SizeToHeader"/>
            </DataGrid.Columns>
        </DataGrid>
    </Grid>
</Window>

App.config应用配置

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
    </startup>
</configuration>

SQL table Categories SQL 表Categories

CREATE TABLE [dbo].[Categories] (
    [CategoryId] INT           IDENTITY (1, 1) NOT NULL,
    [Name]       NVARCHAR (40) NULL,
    PRIMARY KEY CLUSTERED ([CategoryId] ASC)
);

Picture-1图片1 在此处输入图片说明


Update-1更新 1

Picture-2图2 在此处输入图片说明


Update-2更新 2

Added methods:新增方法:

  • AddEntity();添加实体();
  • GetAll();得到所有();

Method AddEntity() .方法AddEntity()

 public void AddEntity()
    {
        Category category = new Category
        {
            Name = "Name_Category_4"
        };

        _context.Categories.Add(category);
        _context.SaveChanges();
    }

Method GetAll() .方法GetAll()

public void GetAll()
        {
            _context.Categories.Load();

            BindingList<Category> _studBindList = _context.Categories.Local.ToBindingList();
        }

I ran debugging twice.我运行了两次调试。
When I debugged a second time, I made a picture.第二次调试的时候,做了个图。

Picture-3图3 在此处输入图片说明

.mdf is a file format used by SQL Server. .mdf 是 SQL Server 使用的文件格式。 You can't directly connect to such a file.您不能直接连接到这样的文件。 Instead you would need to import that file as a database into SQL Server (and if you don't have SQL Server you'll have to install that too).相反,您需要将该文件作为数据库导入 SQL Server(如果您没有 SQL Server,则也必须安装它)。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM