.net EF之CodeFirst代码先行(转)
为了支持以设计为中心的开发流程,EF还更多地支持以代码为中心 (code-centric) ,我们称为代码优先的开发,代码优先的开发支持更加优美的开发流程,它允许你在不使用设计器或者定义一个 XML 映射文件的情况下进行开发。
·允许编写简单的模型对象POCO (plain old classes),而不需要基类。
·通过"约定优于配置",使得数据库持久层不需要任何的配置
·也可以覆盖"约定优于配置",通过流畅的 API 来完全定制持层的映射。
Code First是基于Entity Framework的新的开发模式,原先只有Database First和Model First两种。Code First顾名思义,就是先用C#/VB.NET的类定义好你的领域模型,然后用这些类映射到现有的数据库或者产生新的数据库结构。Code First同样支持通过Data Annotations或fluent API进行定制化配置。
下面我就来进行codeFirst的演示:
先建立控制台程序:
然后新建类:
新建Customer,OrderInfo,以及 HotelDbContext类
在编码前进行相应的引用,然后进行类的编码:
Customer类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CodeFirst1
{
public class Customer
{
public int Id { get; set; }
public string CusName { get; set; }
public virtual ICollection<OrderInfo> order { get; set; }
}
}
OrderInfo类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ComponentModel.DataAnnotations;
namespace CodeFirst1
{
public class OrderInfo
{
[Key]
public int Id { get; set; }
public string content { get; set; }
/// <summary>
/// 外键
/// </summary>
public int customerId { get; set; }
public Customer Customer { get; set; }
}
}
这里要注意Key的主键的问题
HotelDbContxt类的编写:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.Entity;
namespace CodeFirst1
{
public class HotelDbContext :DbContext
{
public HotelDbContext()
: base("name=ConnCodeFirst")
{
}
public DbSet<Customer> Customer { get; set; }
public DbSet<OrderInfo> OrderInfo { get; set; }
}
}
编写成功后加上一个配置文件用来连接数据库:
配置文件的编写如下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.1" />
</startup>
<connectionStrings>
<add name="ConnCodeFirst" connectionString="server=192.168.24.233;uid=sa;pwd=123456;database=CodeFirstDB"
providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
最后运行程序:
数据库展示如下:
---------------------
作者:徐志鹏
来源:CSDN
原文:https://blog.csdn.net/u010158267/article/details/44100113
版权声明:本文为博主原创文章,转载请附上博文链接!
.net EF之CodeFirst代码先行(转)的更多相关文章
- EF| CodeFirst 代码先行
CodeFirst 实例一 1.新建一个WebForm项目,名字就叫CodeFirstEF 2:在项目中添加引用EF所需要的5个核心类库:(如果找不到这几个类库,可以新建基于数据库的ADO.NET 实 ...
- 20.2.翻译系列:EF 6中基于代码的数据库迁移技术【EF 6 Code-First系列】
原文链接:https://www.entityframeworktutorial.net/code-first/code-based-migration-in-code-first.aspx EF 6 ...
- EF框架搭建小总结--CodeFirst代码优先
前言:之前在下总结编写了一篇 EF框架搭建小总结--ModelFirst模型优先 博文,看到一段时间内该博文的访问量蹭.蹭蹭.蹭蹭蹭...往上涨(实际也不是很多,嘿嘿),但是还是按捺不住内心的喜悦(蛮 ...
- 写一个EF的CodeFirst的Demo
写一个EF的CodeFirst的Demo 今天打算写一个关于EF的CodeFirs的一个小Demo.先略说一个EF的三种与数据库,怎么说,叫映射么,好吧,那就这么叫吧,就是一个是ModelFirst就 ...
- Entity Framework 数据库先行、模型先行、代码先行
数据库先行(Database First):基于已存在的数据库,利用某些工具(如Vs提供的EF设计器)创建实体类,数据库对象与实体类的匹配关系等,你也可以手动修改这些自动生成的代码及匹配文件. 模型先 ...
- EF架构~CodeFirst数据迁移与防数据库删除
回到目录 本文介绍两个概念,防数据库自动删除,这是由于在code first模式下,当数据实体发生变化时,会对原来数据库进行删除,并将新数据表添加进来,但这对于我们的运营环境数据库,是万万不能接受的, ...
- EF架构~CodeFirst生产环境的Migrations
回到目录 Migrations即迁移,它是EF的code first模式出现的产物,它意思是说,将代码的变化反映到数据库上,这种反映有两种环境,一是本地开发环境,别一种是服务器的生产环境,本地开发环境 ...
- EF架构~codeFirst从初始化到数据库迁移
一些介绍 CodeFirst是EntityFrameworks的一种开发模式,即代码优先,它以业务代码为主,通过代码来生成数据库,并且加上migration的强大数据表比对功能来生成数据库版本,让程序 ...
- 第十七节: EF的CodeFirst模式的四种初始化策略和通过Migration进行数据的迁移
一. 四种初始化策略 EF的CodeFirst模式下数据库的初始化有四种策略: 1. CreateDatabaseIfNotExists:EF的默认策略,数据库不存在,生成数据库:一旦model发生变 ...
随机推荐
- CodeForces - 833B The Bakery
题解: 线段树经典应用 首先暴力$f[i][j]$表示考虑前i位分成j段的最大值 转移$f[k][j-1]+cost(k+1,i)$枚举k转移 不同数的经典套路就是从它到它前驱这一段 于是维护每个数前 ...
- 【Linux】-- 在linux上安装mysql及基本操作
1.MySQL的安装 1.删除mariadb数据库 yum remove mariadb-libs.x86_64 CentOS7默认安装mariadb数据库,所以要先删除 2.下载mysql源 进入m ...
- 使用控制台对Redis执行增删改查命令
使用控制台对Redis执行增删改查命令 在上一篇里,我们已经安装了redis.这一篇我们将一起来学习如何使用"控制台"管理Redis 首先肯定是打开一个控制台,在windows系统 ...
- pymongo使用手册
MongoDB是由C++语言编写的非关系型数据库,是一个基于分布式文件存储的开源数据库系统,其内容存储形式类似JSON对象,它的字段值可以包含其他文档.数组及文档数组,非常灵活.在这一节中,我们就来看 ...
- [nodemon] clean exit - waiting for changes before restart
出现上述日志信息,程序就不能往下运行了. 原因:node程序在初始化的时候就报错了,仔细debug吧...
- 求n到m之间素数的个数
Description 求n到m之间素数的个数 Input 多组测试数据,每组先输入一个整数t,表示组数,然后每组输入2个正整数n和m,(1 <= n <= m <= 10000) ...
- dup(dup2/dup3)
readme man~ NAME dup, dup2, dup3 - duplicate a file descriptor SYNOPSIS #include <unistd.h> in ...
- 小甲鱼零基础python课后题 P22 021函数:递归是神马
0.递归在编程上的形式是如何表现的呢? 答:在编程上,递归表现为函数调用本身这么一个行为. 1.递归必须满足哪两个基本条件? 答:1函数调用自己. 2有正确的返回条件 2.思考一下,按照递归的特性,在 ...
- centos开启防火墙
https://www.cnblogs.com/oskyhg/p/8011001.html
- Akka并发编程框架 -概念模型(Akka.net或者Orleans)
Akka 来构建具备高容错性.可以横向扩展的分布式网络应用程序. Akka 通常是指一个强大的分布式工具集,用于协调远程计算资源来进行一些工作 Akka 工具集以及Actor 模型的介绍. Actor ...