博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# Code First 配置
阅读量:6176 次
发布时间:2019-06-21

本文共 3246 字,大约阅读时间需要 10 分钟。

 

前言

所谓code first,是代码优先,而不是传统的数据库优先。

code first的好处多多,可不用考虑数据库,只考虑面向对象。下面我们介绍一下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
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
{ public Configuration() { AutomaticMigrationsEnabled = false; } protected override void Seed(MVCCodeFirst.Entity.MyModel context) { //初始化数据 } }}

例如,我们可以初识化学校的数据。这个初始化数据是在输入命令update-database的时候才会调用

//初始化数据格式context.Schools.AddOrUpdate(new School() {Key = 1, Name = "望牛墩中学"});context.SaveChanges();

 

4)配置数据库

打开web.config,可以看到数据库连接现在是

我们修改成本地连接

 

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
Schools { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { //自增长主键 modelBuilder.Entity
() .Property(o => o.Id) .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); } }}

可以关注本人的公众号,多年经验的原创文章共享给大家。

 

 
posted on
2017-05-25 14:47 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/alunchen/p/6903753.html

你可能感兴趣的文章
你到了第几层?图片式标题、按钮与隐藏文本
查看>>
大话重构连载14:我们是这样自动化测试的
查看>>
我的友情链接
查看>>
iis6 php安装 (一)
查看>>
关于,在Mysql中,外键是否会影响性能的问题???
查看>>
利用javascript设置图片等比例缩小
查看>>
dedeCMS如何给频道页添加缩略图
查看>>
CoreSeek快速安装
查看>>
Linux 网络性能调试工具Netstat
查看>>
我的友情链接
查看>>
报表下载SSH
查看>>
我的友情链接
查看>>
Raid磁盘阵列真的是100%的安全吗?raid有哪些常见的故障?
查看>>
Raid5两块硬盘离线解决方案 -阵列数据恢复案例
查看>>
IBM AIX存储层结构介绍 / 常用命令整理
查看>>
sudo用法简记
查看>>
有关宏定义的一篇文章
查看>>
Kubernetes 基本概念
查看>>
Linux命令:ssh,scp使用及免密码登录
查看>>
我的友情链接
查看>>