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. Linux Rabbit的使用

    安装RabbitMQ 1.安装Erlang yum -y install epel-release yum -y update yum -y install erlang socat yum -y i ...

  2. js 原型链的介绍

    对象的原型链:一个对象所拥有的属性不仅仅是它本身拥有的属性,他还会从其他对象中继承一些属性.当js在一个对象中找不到需要的属性时,它会到这个对象的父对象上去找,以此类催,这就构成了对象的原型链. 下面 ...

  3. HelloPython

    HELLOWORD!你好!Python! 学习Python已有一段时间,一个人自学颇不容易,在此分享一些自己学习经验和感受,温故而知新,也希望自己能有些新收获. 学习Python,大多数人创建的第一个 ...

  4. .NET Standard 2.0正式发布了

    亦可赛艇 前天(2017年8月14日),.NET Standard 2.0正式版终于发布了,与之相配套的.NET Core 2.0也同时正式发布,真是令人振奋. 详情请看:https://blogs. ...

  5. Tomcat优化详解

    1          概述         本文档主要介绍了Tomcat的性能调优的原理和方法.可作为公司技术人员为客户Tomcat系统调优的技术指南,也可以提供给客户的技术人员作为他们性能调优的指导 ...

  6. OSGi解决的问题

    osgi最明显的缺陷 bundle尽管可以为隔离的服务建立独立生命周期管理的热部署方式,以及明确的服务导出和导入依赖能力,但是其最终基于jvm,无法对bundle对应的服务实现计算资源的隔离,一个服务 ...

  7. IDEA使用Maven搭建SSM框架

    搭建环境:Intellij IDEA 2017 JDK 1.8 Tomcat 8.5 MySQL 5.7 Spring 4.x Mybatis 3.x 这个过程确实太麻烦了,我用了两个小时 所以建议用 ...

  8. [SQL]LeetCode178. 分数排名 | Rank Scores

    Write a SQL query to rank scores. If there is a tie between two scores, both should have the same ra ...

  9. [Swift]LeetCode817. 链表组件 | Linked List Components

    We are given head, the head node of a linked list containing unique integer values. We are also give ...

  10. apache(OS 10013)以一种访问权限不允许的方式做了一个访问套接字的尝试 ...

    今天启动Apache时, 报了“(OS 10013)以一种访问权限不允许的方式做了一个访问套接字的尝试. : make_sock: could not bind to address 0.0.0.0: ...