做项目的时候,如果我们如果用orm方式来做数据库持久化操作的话.微软官方首先会向我们推荐ef,而我们用ado.net的话,似乎也需要建立实体类来接传值,那么我们用codefirst就有一举两得的效果了

1.在对应的项目安装ef

2.创建实体类

3.接下来需要配置字段的属性,也就是长度,类型之类的,那么string类型一般对应数据库中的nvarchar类型,还有要建立实体类之间的对应关系,就是配置导航属性,这里有注解式和fluent Api两种方式来配置,我建议用fluent Api的方式来配置,因为他会比较直观,

一对多的情况下,我们可以在多的一端配置导航属性,并且建议只在一端配置导航属性,双向的绑定你还要配置更多的信息与它对应,岂不是画蛇添足,如下配置

建立实体类对应的实体类+config文件,让他继承EntityTypeConfiguration,之后在构造函数中配置相关信息

totable是配置在数据库中生成的表的名称

hasrequired是否是必填字段,hasoption是可以为空,这里配置的是日志文件的纪录必须包含一个用户对象AdminUser,并用HasForeignKey指定了外键的名称AdminUserId,withmany()是对应主表的也就是AdminUser来说的,他有多个AdminLog

WillCascadeOnDelete是取消级联删除的策略,

这句话就是正常配置字段的可空性.

配置字段的长度

4.创建DbContext文件

指定了数据库连接字符串

在数据库生成的时候加入fluent Api配置

把实体类加入到数据库

5.创建控制台项目,或是asp.net 项目生成数据库,

ef-codefirst方式配置实体类,生成数据库的更多相关文章

  1. EF CodeFirst关于Mysql如何自动生成数据库表

    相对于sqlserver数据库,mysql的配置过程相对麻烦一些,我们从0讲起. 1.新建一个控制台应用程序 右键点击引用--管理NuGet程序包,搜索Mysql.Data.Entity并安装,安装完 ...

  2. JAVA通过实体类生成数据库查询语句(驼峰命名规则)

    import java.io.IOException; import java.lang.reflect.Field; import java.util.HashMap; import java.ut ...

  3. 13.翻译系列:Code-First方式配置多对多关系【EF 6 Code-First系列】

    原文链接:https://www.entityframeworktutorial.net/code-first/configure-many-to-many-relationship-in-code- ...

  4. 8.翻译系列: EF 6中配置领域类(EF 6 Code-First 系列)

    原文地址:http://www.entityframeworktutorial.net/code-first/configure-classes-in-code-first.aspx EF 6 Cod ...

  5. C# T4 模板 数据库实体类生成模板(带注释,娱乐用)

     说明:..,有些工具生成实体类没注释,不能和SqlServer的MS_Description属性一起使用,然后照着网上的资源,随便写了个生成模板,自娱自乐向,其实卵用都没有参考教程    1.htt ...

  6. EF:根据实体类生成表结构SQL

    根据实体类生成表结构SQL: PM> Enable-Migrations -ProjectName Domain -StartUpProjectName Handler -Force PM> ...

  7. 1.【使用EF Code-First方式和Fluent API来探讨EF中的关系】

    原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/relationship-in-entity-framework-using-code-firs ...

  8. hibernate用注解配置实体类的映射

    一.注解类 1. @Table 声明了该实体bean映射指定的表(table),目录(catalog)和schema名字 2. @Id 声明了该实体bean的标识属性(对应表中的主键). 3. @Co ...

  9. EF Codefirst方式数据库维护操作

    关于EF codefirst方式数据库维护操作 1.数据实体更新 2.打开pm - 锁定项目:MLearning.Data 3.执行命令 : add-migration [名称] 4.检查无误后,执行 ...

随机推荐

  1. centos7设置grub密码保护

    设置grub密码保护:查看grub登录用户名cat /etc/grub.d/01_users,可以看到用户名为root.通过grub2-setpasswords设置grub密码,确认密码 cat /b ...

  2. centos7之zabbix入门(一)

    初始化状态如下 首先按照下面的步骤进行,主机名和可见名可以自己起,dns那里最好也填一下,其它默认就可以了 点击确认后,自动跳转到以下页面 可以看到zbx那里没有亮起来,说明还没有配置成功,接下来点击 ...

  3. Task.Delay() 和 Thread.Sleep() 区别

    1.Thread.Sleep 是同步延迟,Task.Delay异步延迟. 2.Thread.Sleep 会阻塞线程,Task.Delay不会. 3.Thread.Sleep不能取消,Task.Dela ...

  4. async await 的 实质 本质

    async await  的 实质 就是 用 “状态机” 来 取代 函数层层调用 . async await  的 本质 是 语法糖,  和 提高性能 什么的 没什么关系 . 为了避免理解歧义, 我把 ...

  5. Databinding in WPF

    https://www.codeproject.com/Articles/680271/Simplest-MVVM-Ever

  6. 【转】Android AlertDialog自定义布局

    原文网址:https://blog.csdn.net/u010694658/article/details/53022294 由于开发中经常使用弹框,然而系统自带的弹框太局限,也不太美观,经常不能满足 ...

  7. C#:匿名类型

    匿名类型和var关键字是Visual C# 3.0提供的一个新特性,var是隐式类型而并不是类型javascript中的var. var user = new { Id = 1, Name = &qu ...

  8. C#:decimal的去0显示

    public static string DecimalToString(decimal d) { return d.ToString("#0.######"); } 后面的0会给 ...

  9. MySQL分析数据运行状态利器【SHOW PROCESSLIST】

    这个博文,将只是简单的记录一下,我们的数据库操作和使用中,加索引加不上去,分析的过程,其实比较简单,就是看有没有连接进程还在操作表.有的话,将其停掉(不影响业务的场景下). 今天的主角是: SHOW ...

  10. PerformEraseBackground 擦除背景(ThemeServices)

    PerformEraseBackground 擦除背景的简单方法(外带ThemeServices例子) 在查这个函数的时候,顺便看到了有趣的代码. 怎么使用 Themes . unit Unit2; ...