SqlServer数据库

1.DB First

现有DB,生成edmx文件

贴一下生成的model

//------------------------------------------------------------------------------
// <auto-generated>
// 此代码已从模板生成。
//
// 手动更改此文件可能导致应用程序出现意外的行为。
// 如果重新生成代码,将覆盖对此文件的手动更改。
// </auto-generated>
//------------------------------------------------------------------------------ namespace Ruanmou.EFDBFirst
{
using System;
using System.Collections.Generic; public partial class JD_Commodity_001
{
public int Id { get; set; }
public Nullable<long> ProductId { get; set; }
public Nullable<int> CategoryId { get; set; }
public string Title { get; set; }
public Nullable<decimal> Price { get; set; }
public string Url { get; set; }
public string ImageUrl { get; set; }
}
}

2.Code First

有数据库,从数据库获得model,就是这个

贴一下生成的Model,和DB First的不太一样,长度attribute加上了

    [Table("JD_Commodity_001")]//1 特性
public partial class JDCommodity001
{
[Key]
public int Id { get; set; } public long? ProductId { get; set; }
//[ForeignKey]
[Column("CategoryId")]
public int? ClassId { get; set; } [StringLength()]
public string Title { get; set; } public decimal? Price { get; set; } [StringLength()]
public string Url { get; set; } [StringLength()]
public string ImageUrl { get; set; }
}

如果数据库字段或表名和model的不一样(比如想去掉下划线)可以有3种方式,方式1见上图,Model上或属性上加attribute

方式2在 OnModelCreating 里添加映射,code first 的 OnModelCreating 和DB first的不一样, db 的什么也没写,截图下code first的OnModelCreating

代码,启动时可以完成数据库和代码结构的同步

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//启动时可以完成数据库和代码结构的同步
//new CreateDatabaseIfNotExists<codeFirstDbContext>();//默认 不存在就创建
//new DropCreateDatabaseAlways<codeFirstDbContext>();//每次都删除重建
//new DropCreateDatabaseIfModelChanges<codeFirstDbContext>();
//Database.SetInitializer<codeFirstDbContext>(new DropCreateDatabaseIfModelChanges<codeFirstDbContext>());
//对不起 数据都没了。。 测试/快速部署 其实这里还可以完成数据初始化
//请一定小心 modelBuilder.Entity<JDCommodity002>()
.ToTable("JD_Commodity_002")
.Property(c => c.ClassId)
.HasColumnName("CategoryId");//2 链式API modelBuilder.Configurations.Add(new JDCommodity003Mapping());//3 映射文件 modelBuilder.Entity<Category>()
.Property(e => e.Code)
.IsUnicode(false);

方式3 Mapping 的方式,写个Mapping 文件,上面的代码有,据说没什么人用

Oracle数据库

可能引用这个就可以用吧

DB first , OnModelCreating 什么也没写 model还是没有长度的attribute

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}

这个是EF5

    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework,
Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />

模型管理器管理外键,因为名字不一样看着不开心,全改成FK 开头的了用Powerdesigner改的,获取的更新,

用EF的三种方式(SqlServer数据库和Oracle数据库)的更多相关文章

  1. C#批量插入数据到Sqlserver中的三种方式

    本篇,我将来讲解一下在Sqlserver中批量插入数据. 先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的是GUID,表中没有创建任何索引.GUID必然是比自增长要快的,因为你生 成 ...

  2. 第十节: EF的三种追踪实体状态变化方式(DBEntityEntry、ChangeTracker、Local)

    一. 简介 我们在前面章节介绍EF基本增删改的时候,曾说过EF的SaveChanges()方法,会一次性的将所有的实体的状态变化统一提交到数据库,那么你是否想过EF的实体会有哪些状态变化呢?什么原因会 ...

  3. 【转载】C#批量插入数据到Sqlserver中的三种方式

    引用:https://m.jb51.net/show/99543 这篇文章主要为大家详细介绍了C#批量插入数据到Sqlserver中的三种方式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本篇, ...

  4. android sqlite使用之模糊查询数据库数据的三种方式

    android应用开发中常常需要记录一下数据,而在查询的时候如何实现模糊查询呢?很少有文章来做这样的介绍,所以这里简单的介绍下三种sqlite的模糊查询方式,直接上代码把: package com.e ...

  5. PHP连接数据库、创建数据库、创建表的三种方式

    这篇博客主要介绍了三种方式来连接MySQL数据库以及创建数据库.创建表.(代码是我在原来的基础上改的) MySQLi - 面向对象 MySQLi - 面向过程 PDO MySQLi 面向对象 < ...

  6. Java通过JDBC连接数据库的三种方式!!!并对数据库实现增删改查

    前言 java连接数据库完整流程为: 1,获得驱动(driver),数据库连接(url),用户名(username),密码(password)基本信息的三种方式. 2,通过获得的信息完成JDBC实现连 ...

  7. php三种方式操作mysql数据库

    php可以通过三种方式操作数据库,分别用mysql扩展库,mysqli扩展库,和mysqli的预处理模式分别举案例加以说明 1.通过mysql方式操作数据库 工具类核心代码: <?php cla ...

  8. C#与数据库的连接的三种方式

    学习了.net的知识从C#一直到MVC,我一直觉得基础很重要,最近有复习一下数据库连接的三种方式 1 返回结果集的一张表 public static DataTable ExecuteDataTabl ...

  9. 监视EntityFramework中的sql流转你需要知道的三种方式Log,SqlServerProfile, EFProfile

    大家在学习entityframework的时候,都知道那linq写的叫一个爽,再也不用区分不同RDMS的sql版本差异了,但是呢,高效率带来了差灵活性,我们 无法控制sql的生成策略,所以必须不要让自 ...

随机推荐

  1. 请问浏览器访问www.baidu.com经历了怎样的过程?

    1.查找浏览器缓存 首先会查找浏览器缓存,浏览器会保存一段时间你之前访问过的网址的DNS信息,不同的浏览器保存的时长不等. 2.查找系统缓存 如果上面的步骤没有找到对应的DNS信息,这个时候浏览器会尝 ...

  2. C# yield return 和 yield break

    yield关键字用于遍历循环中,yield return用于返回IEnumerable<T>,yield break用于终止循环遍历. 以下对比了使用yield return与不使用yie ...

  3. Spring源码阅读 源码环境搭建(一)

    ring 源码阅读的搭建(一) 一 下载spring源码 进入官方网页:https://spring.io/projects/spring-framework 进入相关的github位置,下载zip包 ...

  4. CentOS7 防火墙(firewall)的操作命令(转)

    安装:yum install firewalld 1.firewalld的基本使用 启动: systemctl start firewalld 查看状态: systemctl status firew ...

  5. Mesos源码分析(11): Mesos-Master接收到launchTasks消息

    根据Mesos源码分析(6): Mesos Master的初始化中的代码分析,当Mesos-Master接收到launchTask消息的时候,会调用Master::launchTasks函数.   v ...

  6. [Swift]LeetCode209. 长度最小的子数组 | Minimum Size Subarray Sum

    Given an array of n positive integers and a positive integer s, find the minimal length of a contigu ...

  7. [Swift]LeetCode212. 单词搜索 II | Word Search II

    Given a 2D board and a list of words from the dictionary, find all words in the board. Each word mus ...

  8. 想成为Python全栈开发工程师必须掌握的技能

    什么是Python全栈工程师? 即从前端页面的实现,到后台代码的编写,再到数据库的管理,一人可以搞定一个公司网站的所有事情,真正实现全栈开发. 全栈只是个概念 也分很多种类 真正的全栈工程师涵盖了we ...

  9. 关于移动端开发,vedio标签层级高遮挡蒙版的解决方案

    问题描述: 使用famework7框架搭建了一个界面,然后再界面中需要使用蒙版效果,在PC端,ios测试没有问题,在Andriod播放视屏再点击显示蒙版的效果师,视频会遮盖蒙版.修改定位,z-inde ...

  10. 10.Git分支-分支管理(git branch命令)、分支开发工作流

    1.分支管理  git branch 不仅可以创建和删除分支,还可以做一些其他工作. 1.不带参数的 git branch ,得到本地仓库当前的分支列表.并且会显示,当期所在的分支,也就是HEAD所指 ...