Entity Framework 6三层架构入门:创建模型Model
需求分析
1、基本数据:学生、学院、班级、课程;现在还不用考虑太复杂的项目逻辑关系,这几个就能体现数据间的关系,关系图如下:
这是简单的数据关系,可以自己扩充。
2、数据库关系梳理
为实现数据的简洁与三层架构的高内聚,低耦合,将数据实现分层:
1、BaseEntity:所有数据的父类,派生出一切数据;所有数据的操作都由它来实现;
2、Person:学生类,有姓名,学号,出生日期,班级号和学院,以及所学课程;
3、Course:课程类,设置一个课程名,也可以自己添加新的信息;
4、College:学院类,设置学院名和介绍;
5、Class:班级类,设置班级名,班级号和班级介绍。
3、必备基础知识
EF6:
EF6 可实现许多热门 O/RM 功能:
- 不依赖于任何 EF 类型的POCO 实体类的映射
- 自动更改跟踪
- 标识解析和工作单元
- 预先、延迟和显式加载
- 使用LINQ转换强类型查询
- 丰富的映射功能,可支持:
- 一对一、一对多和多对多关系
- 继承(每个层次结构一张表、每个类型一张表和每个具体类一张表)
- 复杂类型
- 存储过程
- 通过可视化设计器创建实体模型。
- 通过编写代码创建实体模型的“Code First”体验。
- 既可从现有数据库生成模型,然后手动编辑,也可从头开始创建模型,然后用于生成新的数据库。
- 与 .NET Framework 应用程序模型(包括 ASP.NET)集成,并通过数据绑定与 WPF 和 WinForms 集成。
- 基于 ADO.NET 的数据库连接和可用于连接到 SQL Server、Oracle、MySQL、SQLite、PostgreSQL、DB2 等的众多c。
SQL server:
方便使用的数据库。
4、接下来,就是创建模型层的步骤
创建类库
1、打开 Visual Studio,并使用C# " .NET 类库(.NET Framework) " 模板创建一个 项目。 将项目命名为你先要的名字 ,然后选择 "确定" 。
2、选择Entity Framework版本为4.7.2,点击确定,建立类库。
安装实体框架Entity Framework 6
-
从 "工具" 菜单中,选择 " NuGet 包管理器",然后选择 "程序包管理器控制台"。
-
在“程序包管理器控制台”窗口中,输入以下命令:
Install-Package EntityFramework
一定要先安装,整个项目都是基于该实体框架来构建的。
创建基础数据模型
public class BaseEntity
{
public Guid Id { get; set; } = Guid.NewGuid();
public bool IsRemove { get; set; }
public DateTime DateTime { get; set; }
}
创建数据模型
Person 实体
在 "模型" 文件夹中,右键单击解决方案资源管理器的文件夹,然后选择 "添加 > 类",创建名为Student.cs的类文件。 将模板代码替换为以下代码:
public class Person:BaseEntity
{
public Guid GuidId { get; set; } = Guid.NewGuid();
public string Name { get; set; }
public DateTime BoreTime { get; set; }
[ForeignKey(nameof(Class))]
public Guid ClassId { get; set; }
public Class Class { get; set; }
public College CollegeName { get; set; }
public virtual ICollection<Course>Course { get; set; }
}
在 "模型" 文件夹中,右键单击解决方案资源管理器的文件夹,然后选择 "添加 > 类",创建名为Course.cs的类文件。 将模板代码替换为以下代码:
public class Course:BaseEntity
{
public string CourseName { get; set; }
}
在 "模型" 文件夹中,右键单击解决方案资源管理器的文件夹,然后选择 "添加 > 类",创建名为Class.cs的类文件。 将模板代码替换为以下代码:
public class Class : BaseEntity
{
public string ClassName { get; set; }
public string Recommend { get; set; }
public Guid ClassOfId { get; set; }
}
在 "模型" 文件夹中,右键单击解决方案资源管理器的文件夹,然后选择 "添加 > 类",创建名为College.cs的类文件。 将模板代码替换为以下代码:
public class College:BaseEntity
{
public string CollegeName { get; set; }
public string Recommend { set; get; }
}
用字符串链接数据库(通过XML)
找到如图所示配置文件,添加如下代码:
<connectionStrings>
<add name="你要填的" connectionString="server=你是数据库名;database=你的数据库名称;uid=账号;pwd=密码" providerName="System.Data.Sqlclient"/>
</connectionStrings>
数据库就算是链接上了。
注册上下文
创建一个Context.cs文件,对数据库进行基本配置。
public class StudentContext:DbContext
{
public StudentContext():base("con")
{
Database.SetInitializer<StudentContext>(null);
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
modelBuilder.Conventions.Remove<ManyToManyCascadeDeleteConvention>();
}
public DbSet<Person> Person { get; set; }
public DbSet<Class> Class { get; set; }
public DbSet<College> College { get; set; }
public DbSet<Course> Course { get; set; }
}
配置完后,数据库就可以根据外键,主键进行访问,同时,这个容器还是数据访问层的必须类,后续的操作都依靠它,
使用Code First进行连接
接下来,生成项目,然后就可以开始迁移了。
依次使用如下指令:
enable-migrations
add-migration ‘createDb’
update-database
接下来,你的模型层就建好了。