用EF的三种方式(SqlServer数据库和Oracle数据库)
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数据库)的更多相关文章
- C#批量插入数据到Sqlserver中的三种方式
本篇,我将来讲解一下在Sqlserver中批量插入数据. 先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的是GUID,表中没有创建任何索引.GUID必然是比自增长要快的,因为你生 成 ...
- 第十节: EF的三种追踪实体状态变化方式(DBEntityEntry、ChangeTracker、Local)
一. 简介 我们在前面章节介绍EF基本增删改的时候,曾说过EF的SaveChanges()方法,会一次性的将所有的实体的状态变化统一提交到数据库,那么你是否想过EF的实体会有哪些状态变化呢?什么原因会 ...
- 【转载】C#批量插入数据到Sqlserver中的三种方式
引用:https://m.jb51.net/show/99543 这篇文章主要为大家详细介绍了C#批量插入数据到Sqlserver中的三种方式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本篇, ...
- android sqlite使用之模糊查询数据库数据的三种方式
android应用开发中常常需要记录一下数据,而在查询的时候如何实现模糊查询呢?很少有文章来做这样的介绍,所以这里简单的介绍下三种sqlite的模糊查询方式,直接上代码把: package com.e ...
- PHP连接数据库、创建数据库、创建表的三种方式
这篇博客主要介绍了三种方式来连接MySQL数据库以及创建数据库.创建表.(代码是我在原来的基础上改的) MySQLi - 面向对象 MySQLi - 面向过程 PDO MySQLi 面向对象 < ...
- Java通过JDBC连接数据库的三种方式!!!并对数据库实现增删改查
前言 java连接数据库完整流程为: 1,获得驱动(driver),数据库连接(url),用户名(username),密码(password)基本信息的三种方式. 2,通过获得的信息完成JDBC实现连 ...
- php三种方式操作mysql数据库
php可以通过三种方式操作数据库,分别用mysql扩展库,mysqli扩展库,和mysqli的预处理模式分别举案例加以说明 1.通过mysql方式操作数据库 工具类核心代码: <?php cla ...
- C#与数据库的连接的三种方式
学习了.net的知识从C#一直到MVC,我一直觉得基础很重要,最近有复习一下数据库连接的三种方式 1 返回结果集的一张表 public static DataTable ExecuteDataTabl ...
- 监视EntityFramework中的sql流转你需要知道的三种方式Log,SqlServerProfile, EFProfile
大家在学习entityframework的时候,都知道那linq写的叫一个爽,再也不用区分不同RDMS的sql版本差异了,但是呢,高效率带来了差灵活性,我们 无法控制sql的生成策略,所以必须不要让自 ...
随机推荐
- SVN搭建外网远程访问
准备条件 SVN服务器安装及配置 SVN服务端,客户端安装配置可以参考:http://www.cnblogs.com/mq0036/p/5250198.html 花生壳客户端下载,安装,注册(内网穿透 ...
- 小甲鱼Python3笔记
000-愉快的开始 入门容易,学习难,代码量少. 跨平台: Windows, Mac OS, Linux, UNIX. 应用领域: 操作系统 WEB 3D动画 企业应用 云计算等等. 001-我和Py ...
- c#使用 Newtonsoft.Json 将entity转json时,忽略为null的属性
c#使用 Newtonsoft.Json 将entity转json时,忽略为null的属性,直接在属性上加下面的特性 [JsonProperty(NullValueHandling=NullValue ...
- SSL/TLS握手过程
----------------------------------专栏导航----------------------------------HTTPS协议详解(一):HTTPS基础知识 HTTPS ...
- Android OpenSL ES 开发:OpenSL ES利用SoundTouch实现PCM音频的变速和变调
缘由 OpenSL ES 学习到现在已经知道 OpenSL ES 不仅能播放和录制PCM音频数据,还能改变声音大小.设置左声道或右声道播放.还能变速播放,可谓是播放音频的王者.但是变速有一点不好的就是 ...
- 查看和修改Linux服务器的时区和时间
一.查看和修改Linux的时区1. 查看当前时区 命令 : "date -R" 2. 修改设置Linux服务器时区方法 A 命令 : "tzselect" 方法 ...
- [Swift]LeetCode13. 罗马数字转整数 | Roman to Integer
Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. Symbol Value I 1 ...
- [Swift]LeetCode35. 搜索插入位置 | Search Insert Position
Given a sorted array and a target value, return the index if the target is found. If not, return the ...
- [Swift]LeetCode233. 数字1的个数 | Number of Digit One
Given an integer n, count the total number of digit 1 appearing in all non-negative integers less th ...
- mybatis-generator XML Parser Error on line 38: 必须为元素类型 "table" 声明属性 "enableInsertByPrimaryKey"。
1. 解决方法 在 table 元素中删除属性 enableInsertByPrimaryKey 即可.就是这么神奇... 2. 情景重现 使用 mybatis-generator 插件生成代码时报错 ...