http://www.entityframeworktutorial.net/code-first/entity-framework-code-first.aspx

Ef好的教程

Entity Framework的乐观并发

http://www.cnblogs.com/Gyoung/archive/2013/01/18/2866649.html

附件:EntityFramework系列:MySql的RowVersion

EF里一对一、一对多、多对多关系的配置和级联删除

EntityFramework系列:Repository模式与单元测试

1. Nuget安装好EF6.0.

2. 定义IDbContext , 定义context并实现

///
/// 提供对象列表的一切操作接口
///
public interface IDbContext : IDisposable
{
Database Database { get; }
///
/// Get DbSet
///
/// Entity type
/// DbSet
IDbSet Set() where TEntity : BaseEntity; ///
/// Save changes
///
///
int SaveChanges();
/// <summary>
/// 继承自DbContext, IDbContext,
/// 为什么IDbContext接口里面的属性和方法, 全部在DbContext里面有实现, 因此这里不需要做实现
/// </summary>
public class NopObjectContext : DbContext, IDbContext
{
public NopObjectContext()
: base("name=DefaultConnection")
{
//超时时常
((IObjectContextAdapter)this).ObjectContext.CommandTimeout = ;
//这句代码指定我们是自己手动生成数据库
//Database.SetInitializer<XEngineContext>(null);
}
/// <summary>
/// 覆盖DbContext里面的Set属性, 主要是为了自定义的BaseEntity.
/// </summary>
/// <typeparam name="TEntity">Entity type</typeparam>
/// <returns>DbSet</returns>
public new IDbSet<TEntity> Set<TEntity>() where TEntity : BaseEntity
{
return base.Set<TEntity>();
} protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//来自Nopcommerce里的动态加载所有的fluent api映射 dynamically load all configuration
//System.Type configType = typeof(LanguageMap); //any of your configuration classes here
//var typesToRegister = Assembly.GetAssembly(configType).GetTypes()
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();//去掉ef自建表的时候命名带复数
modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
//全局删掉级联删除, 因为不常用.移除这个默认约定,再在需要开启级联删除的FluentAPI关系映射中用. WillCascadeOnDelete(true) 单独开启 var typesToRegister = Assembly.GetExecutingAssembly().GetTypes()
.Where(type => !String.IsNullOrEmpty(type.Namespace))
.Where(type => type.BaseType != null && type.BaseType.IsGenericType && type.BaseType.GetGenericTypeDefinition() == typeof(EntityTypeConfiguration<>));
foreach (var type in typesToRegister)
{
dynamic configurationInstance = Activator.CreateInstance(type);
modelBuilder.Configurations.Add(configurationInstance);
}; base.OnModelCreating(modelBuilder);
}

下面来一个多对多的配置

下面是映射的map

如果用的联合主键的话.


这里的主键数量必须和表的主键数量相同
public class Student
{ public int ID { get; set; }
public string Name { get; set; } public int SiteID { get; set; } public virtual ICollection Courses{get;set;}
} public class Course{
public int ID{get;set;}
public string Name { get; set; } public int SiteID { get; set; } public virtual ICollection Students { get; set; }
}
public class SCContext : DbContext
{
public SCContext()
: base("name=DefaultConnection")
{
Database.SetInitializer(null);
} protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//dynamically load all configuration
//System.Type configType = typeof(LanguageMap); //any of your configuration classes here
//var typesToRegister = Assembly.GetAssembly(configType).GetTypes()
modelBuilder.Conventions.Remove(); modelBuilder.Entity().ToTable("Student").HasKey(x => new { x.ID, x.SiteID })
.Property(x => x.ID).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); modelBuilder.Entity().ToTable("Course").HasKey(x => new { x.ID, x.SiteID })
.Property(x => x.ID).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
//modelBuilder.Entity().Property(x => x.Name); modelBuilder.Entity().HasMany(x => x.Courses)
.WithMany(x => x.Students)
.Map(r =>
{
r.ToTable("Student_Course_Mapping");
r.MapLeftKey(new string[]{"StudentID", "StudentSiteID"});
r.MapRightKey(new string[] { "CourseID", "CourseSiteID" });
}); base.OnModelCreating(modelBuilder);
}
}

下面是一对一


同样在UserAccount里增加

UserExt依赖于UserAccount
   

最后是一对多


在UserAccount里增加

写在UserAddressMap里. 这个表里有外键, 依赖于UserAccount.

最后来一发表结构

Entity framework 6.0 简明教程 ef6的更多相关文章

  1. 精进不休 .NET 4.5 (12) - ADO.NET Entity Framework 6.0 新特性, WCF Data Services 5.6 新特性

    [索引页][源码下载] 精进不休 .NET 4.5 (12) - ADO.NET Entity Framework 6.0 新特性, WCF Data Services 5.6 新特性 作者:weba ...

  2. Entity Framework 6.0 Tutorials(1):Introduction

    以下系统文章为EF6.0知识的介绍,本章是第一篇 原文地址:http://www.entityframeworktutorial.net/entityframework6/introduction.a ...

  3. 开发 ASP.NET vNext 续篇:云优化的概念、Entity Framework 7.0、简单吞吐量压力测试

    继续上一篇<开发 ASP.NET vNext 初步总结(使用Visual Studio 2014 CTP1)>之后, 关于云优化和版本控制: 我本想做一下MAC和LINUX的self-ho ...

  4. [EF2]Sneak Preview: Persistence Ignorance and POCO in Entity Framework 4.0

    http://blogs.msdn.com/b/adonet/archive/2009/05/11/sneak-preview-persistence-ignorance-and-poco-in-en ...

  5. Entity Framework 5.0系列之Code First数据库迁移

    我们知道无论是"Database First"还是"Model First"当模型发生改变了都可以通过Visual Studio设计视图进行更新,那么对于Cod ...

  6. 在Entity Framework 4.0中使用 Repository 和 Unit of Work 模式

    [原文地址]Using Repository and Unit of Work patterns with Entity Framework 4.0 [原文发表日期] 16 June 09 04:08 ...

  7. Entity Framework 5.0

    今天 VS2012  .net Framework 4.5   Entity Framework 5.0  三者共同发布了. ( EF5 Released ) 在介绍新特性之前,先与大家回顾一下EF版 ...

  8. 云优化的概念、Entity Framework 7.0、简单吞吐量压力测试

    云优化的概念.Entity Framework 7.0.简单吞吐量压力测试 继续上一篇<开发 ASP.NET vNext 初步总结(使用Visual Studio 2014 CTP1)>之 ...

  9. 浅析Entity Framework Core2.0的日志记录与动态查询条件

    前言 Entity Framework Core 2.0更新也已经有一段时间了,园子里也有不少的文章.. 本文主要是浅析一下Entity Framework Core2.0的日志记录与动态查询条件 去 ...

随机推荐

  1. CentOS7下让Asp.Net Core的网站自动运行

    一.安装Nginx yum install nginx 二.配置Nginx vi /etc/nginx/nginx.conf location / { proxy_pass http://127.0. ...

  2. 作业调度系统quartz.net

    任务调度在我们日常开发过程中非常常见,比如:每天晚上0点自动执行某某操作:每周三晚上2点执行某某操作:......当然,我们处理这类问题的方法也有很多,比如:sql的自动任务:windows上创建任务 ...

  3. Atom 清空残余数据

    rm -rf ~/.atom rm /usr/local/bin/atom rm /usr/local/bin/apm rm ~/Library/Preferences/com.github.atom ...

  4. 一个简单文本分类任务-EM算法-R语言

    一.问题介绍 概率分布模型中,有时只含有可观测变量,如单硬币投掷模型,对于每个测试样例,硬币最终是正面还是反面是可以观测的.而有时还含有不可观测变量,如三硬币投掷模型.问题这样描述,首先投掷硬币A,如 ...

  5. react中组件的渲染

    1.封装props对象 2.调用组件函数,得到返回的react元素 3.ReactDom把React元素转成真实的DOM元素并且插入到目标容器内部

  6. flask_json数据入库Mongo

    首先我们先导入python内置的json库,用来将接送数据转换为python对象 import json #导入自定义的数据公共库 from db_tool import db #载入库之前先清空数据 ...

  7. idea 安装mybatis plugin (mybatis插件)

    注意:可以用免费版本的,就是下面没有 被红框圈中的 Free Mybatis Plugin 安装上以后需要破解,先找到下面的文件 打开文件,设置其中的key 和 value : 这里面的key 和 v ...

  8. WebForm——JS检测浏览器是否是IE浏览器

    function IEVersion() { var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串 && userAgen ...

  9. Django模版语言自定义标签-实现前端 关联组合过滤查询

    前端关联 组合过滤查询 实现效果如图: models.py 创建表代码 from django.db import models # Create your models here. class Le ...

  10. KMP算法的next函数求解和分析过程

    转自 wang0606120221:http://blog.csdn.net/wang0606120221/article/details/7402688 假设KMP算法中的模式串为P,主串为S,那么 ...