指定数据连接,指定表名,移除表名复数化(表名后面不加s),设置字段约束,主外键关系。

using MvcApplication1.Models;
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Data.Entity.ModelConfiguration.Conventions;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations; namespace MvcApplication1.Repositories
{
public class EFContext : DbContext
{
     //指定数据库连接字符串 name是 DefaultConnection
public EFContext() : base("DefaultConnection") { } public DbSet<AdminInfo> AdminInfos { get; set; }
public DbSet<ArticlesInfo> ArticlesInfos { get; set; }
public DbSet<BannerInfo> BannerInfos { get; set; }
public DbSet<CandidatesInfo> CandidatesInfos { get; set; }
public DbSet<FriendLinksInfo> FriendLinksInfos { get; set; }
public DbSet<PartnersInfo> PartnersInfos { get; set; }
public DbSet<RecruitmentInfo> RecruitmentInfos { get; set; }
public DbSet<SingleArticle> SingleArticles { get; set; } /// <summary>
/// 构造表
/// </summary>
/// <param name="modelBuilder"></param>
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();//移除表名复数的契约 #region 管理员信息
modelBuilder.Entity<AdminInfo>().HasKey(k => k.ID); //设置主键
modelBuilder.Entity<AdminInfo>().Property(q => q.UserName).IsRequired().HasMaxLength(50);//设置不能为空
modelBuilder.Entity<AdminInfo>().Property(q => q.UserPwd).IsRequired().HasMaxLength(50);//设置不能为空
#endregion #region 招聘信息
modelBuilder.Entity<RecruitmentInfo>().HasKey(k => k.ID);
modelBuilder.Entity<RecruitmentInfo>().Property(q => q.TypeID).IsRequired();
modelBuilder.Entity<RecruitmentInfo>().Property(q => q.Title).IsRequired().HasMaxLength(500);
modelBuilder.Entity<RecruitmentInfo>().Property(q => q.RequireNum).IsRequired().HasMaxLength(50);
modelBuilder.Entity<RecruitmentInfo>().Property(q => q.PostCharacter).IsRequired().HasMaxLength(500);
modelBuilder.Entity<RecruitmentInfo>().Property(q => q.Responsibilities).IsRequired().HasMaxLength(500);
modelBuilder.Entity<RecruitmentInfo>().Property(q => q.Qualification).IsRequired().HasMaxLength(500);
modelBuilder.Entity<RecruitmentInfo>().Property(q => q.CreateDate).IsRequired(); //主表包含多个:CandidatesInfoList;子表含有一个:RecruitmentInfoModel;子表中对应主表的外键:RecruitmentID。
modelBuilder.Entity<RecruitmentInfo>().HasMany(s => s.CandidatesInfoList).WithRequired(c => c.RecruitmentInfoModel).HasForeignKey(f => f.RecruitmentID);
#endregion #region 应聘者信息
modelBuilder.Entity<CandidatesInfo>().HasKey(k => k.ID);
modelBuilder.Entity<CandidatesInfo>().Property(q => q.RecruitmentID).IsRequired();
modelBuilder.Entity<CandidatesInfo>().Property(q => q.Name).IsRequired().HasMaxLength(500);
modelBuilder.Entity<CandidatesInfo>().Property(q => q.MaritalStatus).IsRequired().HasMaxLength(500);
modelBuilder.Entity<CandidatesInfo>().Property(q => q.NativePlace).IsRequired().HasMaxLength(500);
modelBuilder.Entity<CandidatesInfo>().Property(q => q.DomicileLocation).IsRequired().HasMaxLength(500);
modelBuilder.Entity<CandidatesInfo>().Property(q => q.BirthDay).IsRequired().HasMaxLength(500);
modelBuilder.Entity<CandidatesInfo>().Property(q => q.Age).IsRequired().HasMaxLength(500);
modelBuilder.Entity<CandidatesInfo>().Property(q => q.IDCard).IsRequired().HasMaxLength(500);
modelBuilder.Entity<CandidatesInfo>().Property(q => q.Education).IsRequired().HasMaxLength(500);
modelBuilder.Entity<CandidatesInfo>().Property(q => q.Hobby).IsRequired().HasMaxLength(500);
modelBuilder.Entity<CandidatesInfo>().Property(q => q.Address).IsRequired().HasMaxLength(500);
modelBuilder.Entity<CandidatesInfo>().Property(q => q.Areas).IsRequired().HasMaxLength(500);
modelBuilder.Entity<CandidatesInfo>().Property(q => q.Email).IsRequired().HasMaxLength(500);
modelBuilder.Entity<CandidatesInfo>().Property(q => q.Mobile).IsRequired().HasMaxLength(500);
#endregion #region 文章信息
modelBuilder.Entity<ArticlesInfo>().HasKey(k => k.ID);//编号
modelBuilder.Entity<ArticlesInfo>().Property(q => q.TypeID).IsRequired();//类型 1:集团新闻 2:行业动态
modelBuilder.Entity<ArticlesInfo>().Property(q => q.Title).IsRequired();//标题
modelBuilder.Entity<ArticlesInfo>().Property(q => q.IsRecommend).IsRequired();//推荐 0:不推荐 1:推荐
modelBuilder.Entity<ArticlesInfo>().Property(q => q.Img).IsRequired();//配图
modelBuilder.Entity<ArticlesInfo>().Property(q => q.Contents).IsRequired();//内容
modelBuilder.Entity<ArticlesInfo>().Property(q => q.CreateDate).IsRequired();//创建日期
#endregion #region Banner
modelBuilder.Entity<BannerInfo>().HasKey(k => k.ID);//编号
modelBuilder.Entity<BannerInfo>().Property(q => q.Name).IsRequired();//名称
modelBuilder.Entity<BannerInfo>().Property(q => q.Img).IsRequired();//图片
modelBuilder.Entity<BannerInfo>().Property(q => q.LinkUrl).IsRequired();//链接
#endregion #region 友情链接表
modelBuilder.Entity<FriendLinksInfo>().HasKey(q => q.ID);//编号
modelBuilder.Entity<FriendLinksInfo>().Property(q => q.Name).IsRequired();//名称
modelBuilder.Entity<FriendLinksInfo>().Property(q => q.LinkUrl).IsRequired();//链接
#endregion #region 合作伙伴表
modelBuilder.Entity<PartnersInfo>().HasKey(q => q.ID);//编号
modelBuilder.Entity<PartnersInfo>().Property(q => q.Name).IsRequired();//名称
modelBuilder.Entity<PartnersInfo>().Property(q => q.Img).IsRequired();//图标
modelBuilder.Entity<PartnersInfo>().Property(q => q.LinkUrl).IsRequired();//链接
#endregion #region 单篇图文信息
modelBuilder.Entity<SingleArticle>().HasKey(q => q.ID);//编号
modelBuilder.Entity<SingleArticle>().Property(q => q.Title).IsRequired();//标题
modelBuilder.Entity<SingleArticle>().Property(q => q.Contents).IsRequired();//内容
modelBuilder.Entity<SingleArticle>().Property(q => q.CreateDate).IsRequired();//创建日期
#endregion #region 添加默认数据 #endregion
}
}
}

  

MVC DbContext的更多相关文章

  1. EF和MVC系列文章导航:EF Code First、DbContext、MVC

    对于之前一直使用webForm服务器控件.手写ado.net操作数据库的同学,突然来了EF和MVC,好多新概念泉涌而出,的确犹如当头一棒不知所措.本系列文章可以帮助新手入门并熟练使用EF和MVC,有了 ...

  2. MVC实用架构设计(三)——EF-Code First(1):Repository,UnitOfWork,DbContext

    前言 终于到EF了,实在不好意思,最近有点忙,本篇离上一篇发布已经一个多星期了,工作中的小迭代告一段落,终于有点时间来继续我们的架构设计了,在这里先对大家表示歉意. 其实这段时间我并不是把这个系列给忘 ...

  3. MVC初学 - The type or namespace name 'DbContext' could not be found

    问题: The type or namespace name 'DbContext' could not be found (are you missing a using directive or ...

  4. .Net Core MVC 网站开发(Ninesky) 2.4、添加栏目与异步方法

    在2.3中完成依赖注入后,这次主要实现栏目的添加功能.按照前面思路栏目有三种类型,常规栏目即可以添加子栏目也可以选择是否添加内容,内容又可以分文章或其他类型,所以还要添加一个模块功能.这次主要实现栏目 ...

  5. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库

    在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...

  6. .Net Core MVC 网站开发(Ninesky) 2.3、项目架构调整-控制反转和依赖注入的使用

    再次调整项目架构是因为和群友dezhou的一次聊天,我原来的想法是项目尽量做简单点别搞太复杂了,仅使用了DbContext的注入,其他的也没有写接口耦合度很高.和dezhou聊过之后我仔细考虑了一下, ...

  7. .Net Core MVC 网站开发(Ninesky) 2.2、栏目管理功能-System区域添加

    在asp或asp.net中为了方便网站的结构清晰,通常把具有类似功能的页面放到一个文件夹中,用户管理功能都放在Admin文件夹下,用户功能都放在Member文件夹下,在MVC中,通常使用区域(Area ...

  8. MVC Core 网站开发(Ninesky) 2.1、栏目的前台显示

    上次创建了栏目模型,这次主要做栏目的前台显示.涉及到数据存储层.业务逻辑层和Web层.用到了迁移,更新数据库和注入的一些内容. 一.添加数据存储层 1.添加Ninesky.DataLibrary(与上 ...

  9. MVC CodeFirst简单的创建数据库(非常详细的步骤)

       最近在学习MVC的开发,相信有过开发经验的人初学一个新的框架时候的想法跟我一样最关心的就是这个框架如何架构,每个架构如何分工,以及最最关键的就是如何与数据库通信,再下来才是学习基础的页面设计啊等 ...

随机推荐

  1. VScode+Flutter 开发继续踩坑

    运行慢解决方法1:修改build.gradle,注释掉jcenter(),google().使用阿里的镜像.原因是jcenter google库无法访问到导致的问题.虽然我有万能的爬墙工具,开启全局代 ...

  2. webpack实现修改代码实时刷新浏览器

    webpack例子:https://github.com/Aquarius1993/webpackDemo 1. 需要全局和项目安装webpack和webpack-dev-server npm ins ...

  3. PyAlgoTrade Hello World 第一个程序(一)

    本教程的目标是快速介绍PyAlgoTrade.PyAlgoTrade的目标是帮助您实现股票交易策略.假设您有一个交易策略的想法,并且您希望使用历史数据进行评估,并查看其行为方式,那么PyAlgoTra ...

  4. 用 dotTrace 进行性能分析时,各种不同性能分析选项的含义和用途

    对 .NET 程序进行性能分析,dotTrace 能应对绝大多数的场景.在开启一个进程进行性能分析之前,我们会看到一些性能分析选项(Profiler Options).本文将介绍这几个选项的含义,并用 ...

  5. Linux交叉编译工具链和模块编译

    所有的工具: aarch64-poky-linux-addr2line aarch64-poky-linux-c++filt aarch64-poky-linux-g++ aarch64-poky-l ...

  6. am335x内核初始化路径

    /arch/arm/mach-omap2/board_am335xevm.c中 1.myd_am335x_dev_cfg[]{ evm_nand_init() ... myir_gpio_init() ...

  7. 02 - Unit06:弹出对话框

    弹出对话框 如何实现弹出 //弹出出对话框 $("#can").load("alert/alert_notebook.html"); //显示背景色 $(&qu ...

  8. GIT的安装及上传代码到码云

    前言 昨天初次接触GIT及码云,虽然用了2个多小时才搞定,但是还是挺开心的.码云是一个可以储存我们写的代码的一个平台,而Git是一款免费.开源的分布式版本控制系统,可以敏捷高效地处理任何或小或大的项目 ...

  9. post参数的方法 json data 和特别的传参

    json格式传参: 那么久使用json的方式传参: json=payload data格式传参: 其他方式传参: 在webFormes里 value 的值不是普通的字符 要把value值先序列化在放入 ...

  10. Train-Alypay-Cloud:蚂蚁大数据平台培训开课通知(第三次)- 培训笔记3(机器学习平台)

    ylbtech-Train-Alypay-Cloud:蚂蚁大数据平台培训开课通知(第三次)- 培训笔记3(机器学习平台) 机器学习平台 一站式可视化机器学习 https://pai.cloud.ali ...