内容:记录WPF+EF(DBFirst)模式下 做简单应用的一些习惯、遇到的一些问题以及准备就此做些EF的学习测试;

环境:VS2017 ,  SQL Server 2016或2017,EF 6.2.0

 

Step1: 新建WPF简单应用:

安装EF:

Step2: 新增 Model 和 DAL 两个类库:

 

 

 

 

 

添加相互引用: (主应用程序引用Model和DAL , DAL 引用Model)

Model 和 DAL 分别安装 EF。

Step3: Model中建立 实体模型

测试数据采用微软演示测试用数据库 Adventureworks;

为 WPF_EF_DBFirst.Model 增加数据项目,选择 ADO.NET Entity Data Model:

 

选择导航中: EF Designer from database :

点击新建数据库连接后,输入数据库连接的相关参数:服务器名、认证信息、数据库名:

注:考虑到WPF的Config文件是直接可打开浏览的,则选择第一个选项,在数据库连接字符串里把密码隐藏,以后在应用中指定密码;

目前涉及到3个需要起名字的地方:

一个是 Item Name;

一个是 在App.Config 中字符串名称;

一个是 Model Namespace; (此名称具体作用还需要后续学习)

选择需要建模型的数据库表,可以把 HumanResources,Person,Production,Purchasing,Sales 全部都选上;然后点击确定;

需要等待一段时间。。。

这里出现有2个错误提示: (错误原因是EF目前不支持SQL Server的Hierarchyid字段,后续再考虑有什么办法)

至此,把数据模型建立在Model这个库里已经完成。

Step4 题外篇

采用网友:普通的地球人 所提出的Bootstrap风格的WPF样式

https://www.cnblogs.com/tsliwei/p/6138412.html

先去 https://github.com/ptddqr/bootstrap-wpf-style 或者 BootstrapWpfStyle.zip 下载作者的示例程序包;

解压开后,拷贝Styles子目录拷贝进主应用;

修改主应用 App.xaml : (如果是其他项目名称,则修改 WPF_EF_DBFirst 为实际项目名称)

<Application x:Class="WPF_EF_DBFirst.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:WPF_EF_DBFirst"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
        <ResourceDictionary>            
            <ResourceDictionary.MergedDictionaries>                
                <ResourceDictionary Source="pack://application:,,,/WPF_EF_DBFirst;component/Styles/Bootstrap.xaml"/>                
            </ResourceDictionary.MergedDictionaries>            
        </ResourceDictionary>
    </Application.Resources>
</Application>

通过全Solution替换的方式,把BootstrapWpfStyle字符串全部变更为WPF_EF_DBFirst或者实际项目名称:

最后:增加 PresentationFramework.Aero 引用;