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 ...
随机推荐
- [php-pear]如何使用 PHP-PEAR安装器,以及使用 PEAR 安装扩展库
我们都知道 PHP PEAR,就是 PHP Extension and Application Respository,也就是 PHP 扩展和应用代码库. PHP 也可以通过 PEAR 安装器来进行 ...
- [smarty] smarty 模板文件中进行字符串与变量的拼接
// smarty 模板引擎 $arr_tribeLabelList["`$tribe_id`_"]
- asp.net core 健康检查
asp.net core 健康检查 ASP.NET Core 2.2 开始,提供了健康检查中间件和库,用来报告应用基础结构组件的运行状况.官方文档在此 运行状况检查由应用程序作为 HTTP 终结点公开 ...
- nodejs学习(imooc课程笔记, 主讲人Scott)
课程地址: 进击Node.js基础(一) 进击Node.js基础(二) 1. nodejs创建服务器 var http = require('http'); //加载http模块 //请求进来时, 告 ...
- [WC2005]双面棋盘(线段树+并查集)
线段树+并查集维护连通性. 好像 \(700ms\) 的时限把我的常数超级大的做法卡掉了, 必须要开 \(O_2\) 才行. 对于线段树的每一个结点都开左边的并查集,右边的并查集,然后合并. \(Co ...
- Python大法之告别脚本小子系列—各类URL采集器编写
本文作者:i春秋签约作家——阿甫哥哥 系列文章专辑:https://bbs.ichunqiu.com/forum.php?mod=collection&action=view&ctid ...
- 一步步Cobol 400 上手自学入门教程03 - 数据部
数据部的作用 程序中涉及到的全部数据(输入.输出.中间)都要在此定义,对它们的属性进行说明.主要描述以下属性: 数据类型(数值/字符)和存储形式(长度) 数据项之间的关系(层次和层号) 文件与记录的关 ...
- XAMPP中MySQL无法启动解决办法
如图 问题出在mysql的路径上,其实报错已经讲得听清楚了 预期应该是这样 结果却是这样 所以解决办法当然就是修改这个路径,出现这个报错原因大多因为之前电脑装过mysql,所以电脑默认启动是原来的my ...
- POJ 2681
#include<iostream> #include<stdio.h> #include<string> #include<algorithm> #d ...
- 没啥事用C语言写一个Trie tree玩玩,支持中英文,用g++编译通过
#include <cstdio> #include <cstdlib> #include <vector> #define ALPHABETS 2600000 # ...