C# Code First 配置
前言
所谓code first,是代码优先,而不是传统的数据库优先。
code first的好处多多,可不用考虑数据库,只考虑面向对象。下面我们介绍一下code first的配置。
下一篇文章地址:C# Code First 配置(二)
开始
我们这里以建立一个MVC的Code first为例,名字为MVCCodeFirst。
1)建立模型
建立一个数据的新建项,然后选择ADO.NET实体数据模型,名字为MyModel
然后选择Code First模型,空Code First模型,你也可以选择来自数据库的CodeFirst。我们这里选择空CodeFirst模型
确定之后,模型已经建立了
2)建立实体
我们建立一个实体School,有一个主键与学校名字
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web; namespace MVCCodeFirst.Entity
{
public class School
{
[Key]
public long Key { get; set; } public string Name { get; set; } }
}
然后把School添加到DbContext的上下文中。
using System.ComponentModel.DataAnnotations; namespace MVCCodeFirst.Entity
{
using System;
using System.Data.Entity;
using System.Linq; public class MyModel : DbContext
{
public MyModel()
: base("name=MyModel")
{
} //我们添加的School
public virtual DbSet<School> Schools { get; set; }
}
}
3)启动 Enable-Migrations
上面已经建立了表的实体,Code First要创建表,我们要通过命令行来自动生成SQL语句,所以要启动这个功能。
在【程序包管理器控制台】中,启动自动生成SQL语句
Enable-Migrations
如下:
完成之后,你在代码里面可以看到,自动添加了一个文件夹为Migrations,并且类为Configuration.cs
打开可以看到,这里主要用户初识化一些默认的数据
namespace MVCCodeFirst.Migrations
{
using System;
using System.Data.Entity;
using System.Data.Entity.Migrations;
using System.Linq; internal sealed class Configuration : DbMigrationsConfiguration<MVCCodeFirst.Entity.MyModel>
{
public Configuration()
{
AutomaticMigrationsEnabled = false;
} protected override void Seed(MVCCodeFirst.Entity.MyModel context)
{
//初始化数据
}
}
}
例如,我们可以初识化学校的数据。这个初始化数据是在输入命令update-database的时候才会调用
//初始化数据格式
context.Schools.AddOrUpdate(new School() {Key = , Name = "望牛墩中学"});
context.SaveChanges();
4)配置数据库
打开web.config,可以看到数据库连接现在是
<connectionStrings>
<add name="MyModel" connectionString="data source=(LocalDb)\MSSQLLocalDB;initial catalog=MVCCodeFirst.Entity.MyModel;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
</connectionStrings>
我们修改成本地连接
<add name="MyModel" connectionString="Server=localhost; Database=MyModel; Trusted_Connection=True;" providerName="System.Data.SqlClient" />
5)用命令创建数据库、表
初识化数据
add-migration init
就会生成创建的SQL类在Migrations文件夹下
创建数据库、表。在命令中输入:
update-database
我们可以看到本地数据库中有创建了此数据库与表:
3.其他
1)果想指定表的名字,可以在实体类上用注解Table,例如
[Table("School")]
public class School
2)主键注解 [Key]
[Key]
public long Id { get; set; }
3)如果想创建一个自增长的主键
在DB上下文实体中,继承OnModelCreating方法,并且实现实体的主键自增长
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; namespace MVCCodeFirst.Entity
{
using System;
using System.Data.Entity;
using System.Linq; public class MyModel : DbContext
{
//您的上下文已配置为从您的应用程序的配置文件(App.config 或 Web.config)
//使用“MyModel”连接字符串。默认情况下,此连接字符串针对您的 LocalDb 实例上的
//“MVCCodeFirst.Entity.MyModel”数据库。
//
//如果您想要针对其他数据库和/或数据库提供程序,请在应用程序配置文件中修改“MyModel”
//连接字符串。
public MyModel()
: base("name=MyModel")
{
} //我们添加的Schools
public virtual DbSet<School> Schools { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//自增长主键
modelBuilder.Entity<School>()
.Property(o => o.Id)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
}
}
}
可以关注本人的公众号,多年经验的原创文章共享给大家。
C# Code First 配置的更多相关文章
- 在Visual Studio Code中配置GO开发环境
一.GO语言安装 详情查看:GO语言下载.安装.配置 二.GoLang插件介绍 对于Visual Studio Code开发工具,有一款优秀的GoLang插件,它的主页为:https://github ...
- Code::Blocks配置GTK+2和GTK+3
Code::Blocks配置GTK+2和GTK+3 作者 He YiJun – storysnail<at>gmail.com 团队 ls 版权 转载请保留本声明! 本文档包含的原创代码根 ...
- Visual Studio Code中配置GO开发环境
在Visual Studio Code中配置GO开发环境 一.GO语言安装 详情查看:GO语言下载.安装.配置 二.GoLang插件介绍 对于Visual Studio Code开发工具,有一款优秀的 ...
- C# Code First 配置(二)
上一篇文章地址 C# Code First 配置 此文章主要介绍配置映射到表中的详细字段.信息等,如下: System.ComponentModel.DataAnnotations 包含的特性: At ...
- windows通过Visual Studio Code中配置GO开发环境(转)
一.GO语言安装 详情查看:GO语言下载.安装.配置 二.GoLang插件介绍 对于Visual Studio Code开发工具,有一款优秀的GoLang插件,它的主页为:https://github ...
- Visual Studio Code (vscode) 配置 C / C++ 环境
Visual Studio Code (vscode) 配置 C / C++ 环境 昨天突发奇想,想使用vscode配置C++环境,因为不想下载 Dev OR codeblock,然后借助了很多网上教 ...
- VS Code中配置python版本以及Python多版本
VS Code中配置python版本VS Code十分方便配置python的版本:可以选在在本地setting.json或者全局setting.json文件中配置:python.pythonPath在 ...
- 在VS Code下配置Julia
原来尝试用Sublime text3配置Julia,但是老是会出一些问题,所以直接在VS code下配置了 1.下载Julia 2.安装,安装过程和其他得软件安装一样,可以改变安装路径 3.安装完成后 ...
- 在Visual Studio Code 中配置Python 中文乱码问题
在Visual Studio Code 中配置Python 中文乱码问题 方法一:直接代码修改字符集 添加前四行代码 import io import sys #改变标准输出的默认编码 sys.std ...
随机推荐
- 元组(tuple)基本操作
1.定义元组,Python的元组和列表类似,不同之处在于元组中的元素不能修改(因此元组又称为只读列表),且元组使用小括号而列表使用中括号 dimensions.py , ) print(dimensi ...
- Android-Kotlin-递归与尾递归
递归: 阶乘计算: /** * 阶乘: * 1的阶乘是1,因为1往下走一个楼梯 就是0了 * 2的阶乘是 2*1 * 3的继承是 3*2*1 * 4的继承是 4*3*2*1 * 5的阶乘是 5*4*2 ...
- mysql 唯一索引UNIQUE使用方法详解
创建唯一索引的目的不是为了提高访问速度,而只是为了避免数据出现重复.唯一索引可以有多个但索引列的值必须唯一,索引列的值允许有空值.如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列创建索引的 ...
- IIS日志存入数据库之二:ETW
在上一篇文章<IIS日志存入数据库之一:ODBC>中,我提到了ODBC方式保存的缺点,即:无法保存响应时间以及接收和响应的字节数. 如果一定要获取响应时间以及接收和响应的字节数的话,就要另 ...
- nginx-1.12.0版本(编译安装)-自定义安装路径
nginx-1.12.0版本(编译安装)-自定义安装路径 安装路径:/application/nginx-1.12.0 1.前期准备 安装编译需要的gcc和gcc-c++ yum install -y ...
- AJPFX:外汇的爆仓和追加保证金
在外汇交易中,当可用保证金变成0时,账户即会爆仓.而为了防止爆仓,您可以在可用保证金不足时追加保证金以防止爆仓. 例如,您在AJPFX的账户是100倍的杠杆,一手欧美货币对合约为10万美金(1 LOT ...
- VMware中安装Contos
1 检查BIOS虚拟化支持 2 新建虚拟机 3 新建虚拟机向导 4 创建虚拟空白光盘 5 安装Linux系统对应的CentOS版 6 虚拟机命名和定位磁盘位置 7 处理器配置,看自己是否是双核.多核 ...
- dubbo实现原理之SPI简介
dubbo采用微内核+插件体系,设计优雅,扩展性很强.微内核+插件体系是如何实现的呢?想必大家都知道SPI(service provider interface)机制.这种机制的原理是假如我们定义了服 ...
- underscore.js源码研究(8)
概述 很早就想研究underscore源码了,虽然underscore.js这个库有些过时了,但是我还是想学习一下库的架构,函数式编程以及常用方法的编写这些方面的内容,又恰好没什么其它要研究的了,所以 ...
- Java - Junit单元测试框架
简介 Junit : http://junit.org/ JUnit是一个开放源代码的Java语言单元测试框架,用于编写和运行可重复的测试. 多数Java的开发环境都已经集成了JUnit作为单元测试的 ...