前言

所谓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 配置的更多相关文章

  1. 在Visual Studio Code中配置GO开发环境

    一.GO语言安装 详情查看:GO语言下载.安装.配置 二.GoLang插件介绍 对于Visual Studio Code开发工具,有一款优秀的GoLang插件,它的主页为:https://github ...

  2. Code::Blocks配置GTK+2和GTK+3

    Code::Blocks配置GTK+2和GTK+3 作者 He YiJun – storysnail<at>gmail.com 团队 ls 版权 转载请保留本声明! 本文档包含的原创代码根 ...

  3. Visual Studio Code中配置GO开发环境

    在Visual Studio Code中配置GO开发环境 一.GO语言安装 详情查看:GO语言下载.安装.配置 二.GoLang插件介绍 对于Visual Studio Code开发工具,有一款优秀的 ...

  4. C# Code First 配置(二)

    上一篇文章地址 C# Code First 配置 此文章主要介绍配置映射到表中的详细字段.信息等,如下: System.ComponentModel.DataAnnotations 包含的特性: At ...

  5. windows通过Visual Studio Code中配置GO开发环境(转)

    一.GO语言安装 详情查看:GO语言下载.安装.配置 二.GoLang插件介绍 对于Visual Studio Code开发工具,有一款优秀的GoLang插件,它的主页为:https://github ...

  6. Visual Studio Code (vscode) 配置 C / C++ 环境

    Visual Studio Code (vscode) 配置 C / C++ 环境 昨天突发奇想,想使用vscode配置C++环境,因为不想下载 Dev OR codeblock,然后借助了很多网上教 ...

  7. VS Code中配置python版本以及Python多版本

    VS Code中配置python版本VS Code十分方便配置python的版本:可以选在在本地setting.json或者全局setting.json文件中配置:python.pythonPath在 ...

  8. 在VS Code下配置Julia

    原来尝试用Sublime text3配置Julia,但是老是会出一些问题,所以直接在VS code下配置了 1.下载Julia 2.安装,安装过程和其他得软件安装一样,可以改变安装路径 3.安装完成后 ...

  9. 在Visual Studio Code 中配置Python 中文乱码问题

    在Visual Studio Code 中配置Python 中文乱码问题 方法一:直接代码修改字符集 添加前四行代码 import io import sys #改变标准输出的默认编码 sys.std ...

随机推荐

  1. Python自动化开发 - 常用模块(一)

    本节内容 1.模块介绍 2.time&datetime模块 3.random模块 4.os模块 5.sys模块 6.json&pickle模块 7.logging模块 一.模块介绍 模 ...

  2. 1. Ubuntu下MongoDB的安装和使用

    一.MongoDB介绍 MongoDB 是一个是一个基于分布式文件存储的数据库,介于关系数据库和非关系数据库之间,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,是类似jso ...

  3. Web应用安全之点击劫持(CLICKJACKING)与X-FRAME-OPTIONS HEADER

    点击劫持(clickjacking)与X-Frame-Options Header 文/玄魂 目录 前言... 1.1 点击劫持(clickjacking attacks)... 1.2  Frame ...

  4. Kali Linux渗透测试实战 2.2 操作系统指纹识别

    目录 2.2 操作系统指纹识别 2.2.1 Banner抓取 2.2.2 TCP 和 ICMP 常规指纹识别技术 TCP数据报格式 ICMP首部格式 TTL与TCP窗口大小 FIN探测 BOGUS f ...

  5. 工作随笔——Java网络代理(http,socks)

    简单说一下Java如何便捷的使用网络代理功能 此方法使用于大部分情况,一些特殊框架(如:mina)无效. // 代码设置http代理 System.setProperty("proxySet ...

  6. WPF Adorner

    之前做项目时,为了实现类似微信消息数目的效果   image.png ,我之前是修改的ControlTemplate.类似于将一个带数字的控件,放在另一个控件的右上角,来实现的这个效果. 原来WPF有 ...

  7. 剑指offer编程题Java实现——面试题4替换空格

    题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. package Solution; ...

  8. charles捕获手机端请求数据

    charles是mac os中的一款类似于windows下fiddler的代理软件,个人感觉比fiddler功能强大:通过charles可以实现指定的请求响应.篡改请求内容.延迟请求.捕获手机端请求等 ...

  9. cad2014卸载/安装失败/如何彻底卸载清除干净cad2014注册表和文件的方法

    cad2014提示安装未完成,某些产品无法安装该怎样解决呢?一些朋友在win7或者win10系统下安装cad2014失败提示cad2014安装未完成,某些产品无法安装,也有时候想重新安装cad2014 ...

  10. dell 远程管理卡的使用racadm

    尊重作者的劳动,转载请注明作者及原文地址 http://www.cnblogs.com/txwsqk/p/6522854.html 可以直接在浏览器输入管理卡的地址-用户名-密码页面操作 也可以通过命 ...