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. iOS开发 关于iBeacon的一些记录

    最近时间一直在研究ibeacon所以把自己遇到的一些问题写下来做个笔记. 参考资料:https://github.com/nixzhu/dev-blog/blob/master/2014-04-23- ...

  2. 使用EF操作Oracle数据库小计

    1.建表 CREATE TABLE item.ORDERS( ORDERID ) CONSTRAINT PK_ORDERS PRIMARY KEY, ORDERNO ), STOREID ), STO ...

  3. GeneralizedLinearAlgorithm in Spark MLLib

    GeneralizedLinearAlgorithm SparkMllib涉及到的算法 Classification Linear Support Vector Machines (SVMs) Log ...

  4. VIM 实现tab标签页及分屏,切换命令

    1,在一个窗口中,VIM 的小tab标签页命令:   :tabnew [++opt选项] [+cmd] 文件            建立对指定文件新的tab :tabc       关闭当前的tab ...

  5. C# windform 使用TreeGridView

    1 下载 treeGridView.DLL库文件. 2 添加到工程中. 右键“工具箱”选择“选择项” 弹出对话框 选择“浏览” 选中下载还的dll库文件.完成后工具箱中会有 treeGridView控 ...

  6. 一个docker容器中运行多个服务还是弄一堆docker容器运行?

    不建议直接在单个 Docker 容器中运行多个程序. 以 2017年 10 月18 日 Docker 官方支持 Kubernetes 为分水岭计算,Kubernetes 赢得容器编排之战的最终胜利已经 ...

  7. SpringBoot2 web

    验证框架 SpringBoot支持JSR-303,Bean等验证框架 JSR-303 JSR-303是Java的标准验证框架,已有实现Hibernate validator. JSR-303验证类型 ...

  8. 多个JDK下TOMCAT运行设置

    当OS中含有多个JDK版本时,设置TOMCAT下JAVA环境变量信息的办法: 1.在setclasspath.bat或者setclasspath.sh下设置 set JAVA_HOME=d:\java ...

  9. 08-01 java 帮助文档的制作和使用,使用jdk提供的帮助文档

    01_帮助文档的制作和使用 制作说明书的流程 如何制作一个说明书呢? A:写一个工具类 B:对这个类加入文档注释 怎么加呢? 加些什么东西呢? C:用工具解析文档注释 javadoc工具 D:格式 j ...

  10. odoo开发笔记:Server+Action服务器动作自动触发执行

           Odoo的市场定位是SME(中小型企业),这个市场的ERP产品,多如牛毛,产品各具特色.不过,Odoo的自动化处理机制,可以睥睨天下,无人能及.包括一些大型国产软件,如用友.金蝶也不具备 ...