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 ...
随机推荐
- 纯净得只剩下字的访问IP查询API
纯净得只剩下字的访问IP查询API 实用资源 / 2018-02-26 / 3 条评论 看到一个好玩的,就随手收藏一下,本API作用:获取用户真实IP,而获取用户IP常见的坑有两个,开发支付的时候也需 ...
- 数据单位bit byte kb Mb Gb
8 bit = 1 byte 2^10 bytes = 1 kb 2^10 kb = 1 Mb 2^10 Mb = 1Gb 2^32 bit = 2^2 * 2^10 * 2^10 * 2^10 bi ...
- Ubuntu16.04安装NVIDIA显卡驱动
1.下载官方驱动程序 http://www.geforce.cn/drivers 如果我们直接安装驱动的话,往往会报错:ERROR: The Nouveau kernel driver is curr ...
- mosh——Linux下基于UDP的SSH连接工具
一:TCP over UDP 1.安装mosh yum install epel-releaseyum install mosh 2.使用客户端连接 mosh user@ip -p 3.查看mosh的 ...
- Django:model中的ForeignKey理解
有两个数据模型栏目模型和文章模型ArticleColumn和ArticlePost ArticleColumn: class ArticleColumn(models.Model): # 用户与栏目是 ...
- 如何查看 Ubuntu下已安装包版本号
原文链接:https://www.cnblogs.com/the-tops/p/8350662.html 一个软件工具叫做apt-show-versions,通过apt-get安装: $sudo ap ...
- Git错误日志--! [rejected]
当出现下面错误时 ,是因为和仓库两端版本不一致时,常见于刚创建仓库时,中只有readme文件的情况.执行下面的运行完毕之后.再push到仓库即可 ! [rejected] master -> m ...
- Android---------------ContentProvider的学习
1.Uri uri = Intent.getData()------------->可以获得Uri的地址 2.Cursor cursor = getContentResolver().quer ...
- 《Python自动化运维之路》 系统基础信息模块(一)
系统性能收集模块Psutil 目录: 系统性能信息模块psutil 系统性能信息模块psutil psutil能够轻松实现获取系统运行的进程和系统利用率包括(CPU,内存,磁盘 和网络)等.主要用于系 ...
- 初探日志框架Logback
一. 背景 最近因为学习项目时需要使用logback日志框架来打印日志, 使用过程中碰到很多的疑惑, 而且需要在控制台打印mybatis执行的sql语句, 于是决定沉下心来 研究一下logback的使 ...