EntityFramework CodeFirst 学习】的更多相关文章

个人学习笔记仅供分享,如有错误还请指出 demo结构:models类库和控制台程序 1.首先在model中建立,ADO.NET 实体数据模型---空模型,然后新建数据实体,并且生成数据库 2.控制台想买引用models 3.创建实体DbContext DbContext称之为数据库上下文,其可以代表一个数据库的集合或者表示为数据库的一个会话,以便我们查询和保存数据.我们定义一个派生自 System.Data.Entity.DbContext 的上下文,并为模型中的每个类公开一个类型化 DbSet…
接着在Oracle中使用Entity Framework 6 CodeFirst这篇博文,正在将项目从SQLServer 2012转至Oracle 11g,目前为止遇到的问题在此记录下. SQL Server中datetime类型所能表示的时间范围是1753-01-01 00:00:00.000至9999-12-31 23:59:59.998之间.在.NET中DateTime的初始值是0001-01-01 00:00:00.000000,该值超出SQL Server中datetime所能表示的范…
EntityFramework Core 学习系列(一)Creating Model Getting Started 使用Command Line 来添加 Package  dotnet add package Microsoft.EntityFrameworkCore.SqlServer 使用 -v 可以指定相应包的版本号. 使用dotnet ef 命令  需要在.csproj 文件中包含下面引用 <ItemGroup> <DotNetCliToolReference Include=…
Code First 约定 在前一篇中,我们已经知道了EF Code-First怎样从模型类(domain classes)中创建数据库表,下面,我们开始学习默认的Code-First约定. 什么是约定? 约定就是在Code-First模式中自动配置模型类的默认规则,Code-First约定定义在System.Data.Entity.ModelConfiguration.Conventions 命名空间 让我们来看看各种约定的概述 类型发现(Type Discovery): 在前一篇中,我们创建…
前言:学习了EF框架这么久,还没有好好总结一番,正好遇到一国外的网站,发现不错,随即翻译过来,一是让自己复习一遍,二是供广大初学者学习,翻译过程中加入了一些自己的理解,如有错误,还请指出,多谢多谢.好了,进入正题 EF框架有三种设计模式:Code-First.Model-First.Database-First,本篇讨论Code-First (EF6已开源,网址:http://entityframework.codeplex.com/) 什么是Code-First? Entity Framewo…
前言:学习了EF框架这么久,还没有好好总结一番,正好遇到一国外的网站,发现不错,随即翻译过来,一是让自己复习一遍,二是供广大初学者学习,翻译过程中加入了一些自己的理解,如有错误,还请指出,多谢多谢.好了,进入正题 EF框架有三种设计模式:Code-First.Model-First.Database-First,本篇讨论Code-First (EF6已开源,网址:http://entityframework.codeplex.com/) 什么是Code-First? Entity Framewo…
一.概要 本文主要是学习CodeFirst思想.技术上的实现是C#(.net framework4.6.1) 控制台 + PostgreSQL 10.2.1 代码:https://pan.baidu.com/s/1ggzHRub 二.实现过程 1.新建控制台 2.添加nuget包:EntityFramework6.Npgsql,还有很多次要包,依据代码需要增加 3.app.config配置,依据每个人的不同情况自行更改 <system.data> <DbProviderFactories…
Fluent API配置: 前面我们已经了解到使用DataAnotations特性来覆写Code-First默认约定,现在我们来学习Fluent API. Fluent API是另一种配置领域类的方法,它比DataAnnotations特性提供更多的配置方法,下表是Fluent API支持的类型映射. 映射种类 配置数据库 模型(Model-wide)映射 设置默认架构 设置自定义约定 实体(Entity)映射 设置单表或多表和设置架构 设置复杂类型 设置继承层次结构 属性(Property)映…
前言:在前篇中,总是把领域类(Domain Class)翻译成模型类,因为我的理解它就是一个现实对象的抽象模型,不知道对不对.以防止将来可能的歧义,这篇开始还是直接对Domain Class直译. 前面我们学习了默认Code-First约定,Code-First使用默认约定根据领域类构建概念模型,Code-First利用一个设计模型参考作为约定来覆盖配置,意思就是我们可以通过配置领域类来覆写这些约定以提供给EF需要的信息,有两种方法配置领域类. 数据注释(DataAnnotations) Flu…
现在我们来学习,当数据库初始化的时候,Code First怎样设置数据库的名字. 下面的图显示了数据库初始化的工作流程,根据传入给context基类的构造函数的参数来初始化: 根据上面的图,context基类的构造函数可以传入如下参数: 无参数 参数为数据库名称 参数为连接字符串 无参数的构造函数: 如果不传参数给context基类的构造函数,它就会在我们本地创建一个以{命名空间}.{Context类名}为名字的数据库.比如下面代码会创建一个名字为SchoolDataLayer.Context的…
Code First中有三种不同的方法表示继承层次关系 1.Table per Hierarchy (TPH): 这种方法建议用一个表来表示整个类的继承层次关系,表中包含一个识别列来区分继承类,在EntityFramework中,这是默认的实现   类与数据库表的映射最简单的策略应该是:每个持久类对应一张表.这种方法听起来很简单,继承是一个可见的结构之间的不匹配的面向对象和关系世界,因为面向对象系统模型都是“is a”和“has a”的关系. SQL中的实体关系都是“has a”的关系.SQL数…
协定是一系列的默认规则用来自动配置领域中的概念模型 1:类型发现 Code-First对包含DBSet属性的类型创建表(包括这些类型的所有引用类型) public class Student { public Student() { } public int StudentID { get; set; } public string StudentName { get; set; } public DateTime DateOfBirth { get; set; } public byte[]…
EF CodeFirst 真是时光如梦,岁月如歌,自己一不留神就被后浪拍在了沙滩上,就连我要学的这个东西也是12年就在博客园很火了. EF有三种开发模式,DatabaseFirst, ModelFirst,CodeFirst,我前两种都用过,CodeFirst以前只是听说过,但从来没用过,最新下了一些开源项目,打开发现看不懂,不得不继续学习: 创建学生类 public class Student { public int StudentId { get; set; } public string…
好久没写博客了,今天研究了EF框架的CodeFirst模式,从字面意思可以看出,代码优先.所谓代码优先,与以往的添加ado.net不同,主要是编写代码生成数据库和数据表,生成数据实体映射.个人感觉这种方法相比较自动添加数据集的方式是不错的,但是有一个缺点就是,你编写的生成数据库和数据表的代码一旦写好,改起来就比较麻烦,就算改动了一个属性,就得将数据库删掉,重新运行代码(不删也行,但是需要更新数据库,比较麻烦).好了,请看代码: 1.项目使用三层架构,在数据访问层用的是EF框架 2.在Model层…
原文地址:https://docs.efproject.net/en/latest/modeling/index.html 前言: EntityFramework 使用一系列的约定来从我们的实体类细节创建模型.我们可以钦定一些额外的映射配置来添加.重写实体类的哪些细节应该被这些约定所发现. 这篇文章讲述了一些无论模型被存储在哪种关系型数据库中都可以生效的配置项.DataBase Provider 也同样可以针对某一种数据存储启用指定的配置项.更多相关文档请查看:Database Provider…
本文出自:https://www.cnblogs.com/tang-tang/p/5510574.html 一.摘要 EF Code-First提供了一个可以用在领域类或其属性上的DataAnnotation特性集合,DataAnnotation特性会覆盖默认的EF约定. DataAnnotation存在于两个命名空间里: System.ComponentModel.DataAnnotations System.ComponentModel.DataAnnotations.Schema 注意: …
EF Code-First提供了一个可以用在领域类或其属性上的DataAnnotation特性集合,DataAnnotation特性会覆盖默认的EF约定. DataAnnotation存在于两个命名空间里: System.ComponentModel.DataAnnotations和System.ComponentModel.DataAnnotations.Schema 注意: DataAnnotations只提供了一部分的配置选项,全部的配置选项在Fluent API中. System.Com…
一对多(One-to-Many)关系: 下面,我们来介绍Code-First的一对多关系,比如,在一个Standard(年级)类中包含多个Student类. 如果想了解更多关于one-to-one,one-to-many,many-to-many关系的信息,请访问Entity Relationship 1.使用DataAnnotations配置One-to-Many关系: 如下代码所示: public class Student { public Student() { } public int…
配置一对一(One-to-One)关系: 两个实体中,如果一个实体的一个实例与另一个实体相关,则我们就叫做一对一关系 查看如下代码: public class Student { public Student() { } public int StudentId { get; set; } public string StudentName { get; set; } public virtual StudentAddress Address { get; set; } } public cla…
在前篇CodeFirst类型约定中,我们在数据库中为每一个模型类创建一个表,但是有个问题,我们可以设计出带继承关系的模型类,即面向对象编程既有“has a”(表示类继承)也有“is a”(表示类包含)关系,但是SQL的基础关系模型在表与表中仅支持"has a"关系,SQL数据库管理系统不支持继承类型.所以,怎样用关系型数据库来映射面向对象模型呢? Code-First中有下面三种不同的方法来表示一个继承的层次结构: Table per Hierarchy (TPH): 这种方法建议用一…
EntityFramework Reverse POCO Generator https://marketplace.visualstudio.com/items?itemName=SimonHughes.EntityFrameworkReversePOCOGenerator#qna…
0. 写在前面 1. 建立运行环境 2. 添加实体和映射数据库 1. 准备工作 2. Data Annotations 3. Fluent Api 3. 包含和排除实体类型 1. Data Annotations [NotMapped] 排除实体和属性 2. Fluent API [Ignore] 排除实体和属性 4. 列名称和类型映射 1. Data Annotations 5. 主键 1. Data Annotations [Key] 2. Fluent API [HasKey] 6. 备用…
1.CreateDatabaseIfNotExists: 2.DropCreateDatabaseIfModelChanges: 3.DropCreateDatabaseAlways: 4.Custom DB Initializer: public class SchoolDBContext: DbContext { public SchoolDBContext(): base("SchoolDBConnectionString") { Database.SetInitializer&…
什么是Code-First 基本工作流: 写好应用程序的领域类和上下文类→配置领域类的额外映射→运行程序→Code-First API创建新的数据库或与现有数据库对应→添加种子数据到数据库中测试…
一.Entity Framework 迁移命令(get-help EntityFramework) Enable-Migrations 启用迁移 Add-Migration 为挂起的Model变化添加迁移脚本 Update-Database 将挂起的迁移更新到数据库 Get-Migrations 获取已经应用的迁移 二.自定义迁移 现有一个Demo,有如下Product模型: 1: public class Product 2: { 3:   4: public int ProductId {…
Number1 新建一个项目 给新项目添加一个实体数据模型 选择第三个 这里我创建两个有关系的类,也就是有外键关系的数据库表 using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace WebApplication4 { public class Cate { public int Id { get; set; } public string Categories {…
目录 开发任务 代码实现 开发任务 DotNetNB.Security.Core:定义 core,models,Istore:实现 default memory store DotNetNB.Security.Store.EntityFramework:基于 mysql 创建 PermissionStore 和 ResourceStore 代码实现 我们需要在 ResourceProviderHostedService 中读取所有的 Resource,将 Resource 转换为 Permiss…
原文地址:https://docs.efproject.net/en/latest/modeling/keys.html Keys (primary) Key 是每个实体例的主要唯一标识.EF Core中的 Key 映射到关系型数据库中就相当于主键.我们也可以配置一个不是主键的唯一标识给一个实体.(点这里 Alternate Keys 查看更多信息) 内容导航 约定 Data Annotation Fluent API 约定 依照约定,一个名称为 Id 或者 <type name>Id 的属性…
原文地址:https://docs.efproject.net/en/latest/modeling/included-properties.html 在模型中包含一个属性意味着 EF 拥有了这个属性的元数据并且将尝试在数据库中进行读写属性的值. 内容导航 约定 Data Annotation Fluent API 约定 根据约定,带有 getter 和 setter 的公共属性将被包含在模型中. Data Annotations 我们可以使用 Data Annotaions 来从模型中排除一个…
原文地址:https://docs.efproject.net/en/latest/modeling/included-types.html 在模型类中包含一种类型意味着 EF 拥有了这种类型的元数据并且将尝试在数据库中进行读写类型的实例. 内容导航 约定 Data Annotation Fluent API 约定 根据约定,暴露在你的上下文的 DbSet 属性中的类型将会被包含入你的模型中.此外,在 OnModelCreating 方法中涉及到的类型也会被包含进来.最终,任何在已被发现的类型被…