code-builder是一款代码生成maven mojo插件,通过简单的配置就可以完成数据库内Table转换Entity或者其他实体类,想怎么生成完全根据你的个人业务逻辑,code-builder尽可能的完善的提供数据库内的一些定义的信息...在基础设计上是可以在任何数据库类型中来完成它的生成任务的,不过初版本仅支持了MySQL、MariaDB这两种数据库类型,在code-builder后期更新版本中会把主流的数据库进行添加。...> 数据库驱动依赖添加 code-builder不局限你使用的数据库类型,所以在生成时需要使用者添加对应数据类型的依赖,如上面的配置中则是添加了...内置参数 模板驱动数据模型内置了部分参数,code-builder准备的每一个参数都是在生成实体类时都可能会用到的。...,数据类型:java.lang.Boolean,true:外键,false:非外键 size 列长度,数据类型:java.lang.Integer decimalDigits 小数点精度,数据类型
原理大致是数据库中每行数据包含一个并发令牌字段,对改行数据的更新都会出发令牌的改变,在发生并行更新时,系统会判断令牌是否匹配,如果不匹配则认为数据已发生变更,此时会抛出异常,造成更新失败。...在数据库中,数据表之间的关系可以分为一对一、一对多、多对多三种,在实体之间同样有这三种关系,但是EF Core仅支持一对一、一对多关系,如果要实现多对多关系,则需要通过关系实体进行关联。...,显然无论在Blog或Tag中定义外键都不合适,此时就需要一张关系表来进行关联,这张表就是BlogTag表。...仅支持该模式 TPT(table-per-type ):基类和子类不在同一个表中,子类对应的表中仅包含基类表的主键和基类扩展的字段,目前EF Core不支持该模式 TPC(table-per-concrete-type...):基类和子类不在同一个表中,子类中包含基类的所有字段,目前EF Core不支持该模式 EF Core仅支持TPH模式,基类和子类数据将存储在同一个表中。
EF有三种使用场景: 从数据库生成Class, 由实体类生成数据库表结构, 通过数据库可视化设计器设计数据库,同时生成实体类。 O/RM是什么?...Entity Framework 架构 ? EDM (实体数据模型):EDM包括三个模型,概念模型、 映射和存储模型。 概念模型 ︰ 概念模型包含模型类和它们之间的关系。...独立于数据库表的设计。 存储模型 ︰ 存储模型是数据库设计模型,包括表、 视图、 存储的过程和他们的关系和键。 映射 ︰ 映射包含有关如何将概念模型映射到存储模型的信息。...ADO .Net Data Provider:使用标准的Ado.net与数据库通信 Entity Framework运行环境 EF5由两部分组成,EF api和 .net framework 4.0...实例创建实体数据模型 使用向导创建实体类,或键添加,傻瓜式的~
前言 简单的说一下自己的理解,大家应该都很明白ADO.NET,也就是原生态的数据库操作,直接通过拼接SQL语句,表与表之间通过链接(inner join left join 或者子查询),也就是在设计表的时候预先设计好的...Entity Framework 关系约束配置 对于实体关系对应的数据表关系,无非“0:1,1:1,1:N,N:N”这几种,可以使用导航属性中的数据类型来表示,0…1端使用单实体类型表示,N端使用ICollection...要配置的实体类型将成为依赖对象,且包含主体的外键。作为关系目标的实体类型将成为关系中的主体。...,并指定了表名、对应的外键;注意如果不使用FluentAPI配置,Product和Order配置了相应的导航属性,EF也会默认生成一张表(表名为“+”) Map:将关系配置为使用未在对象模型中公开的外键属性...可通过指定配置操作来自定义列和表。如果指定了空的配置操作,则约定将生成列名。如果在对象模型中公开了外键属性,则使用 HasForeignKey 方法。并非所有关系都支持在对象模型中公开外键属性。
数据共享使用者应用程序可以使用 ADO.NET 来连接到这些数据源,并检索、处理和更新所包含的数据。 ...作为.NET框架的重要组成部分,ADO.NET 类封装在 System.Data.dll 中,并且与 System.Xml.dll 中的 XML 类集成。...该类库包含两组重要的类:一组负责处理软件内部的实际数据(DataSet),一组负责与外部数据系统通信(Data Provider)。...DataSet 包含一个或多个 DataTable 对象的集合,这些对象由数据行和数据列以及主键、外键、约束和有关 DataTable 对象中数据的关系信息组成。 ...表中的每个字段都是强类型成员,与.NET 通用类型系统(Common Type System)完全兼容。个别的字段甚至可以作为局部变量来使用。
(Table per Concete class):完全丢弃多态和继承 零、TPH TPH是将整个类层次映射到但表中,该表包含所有类中的所有属性,特定行表示的具体子类通过 discriminator 来标识区分...一、TPT TPT是常用的策略,通过外键来表示继承,父类和子类分别位于不同的表中,子类表包含自身属性列和父类表的外键,并将父表的外键作为子类表的主键。...与父类的多态关联将被表示为引用父类表的外键。缺点在于性能极差,如果要进行查询就要多表连接查询。...二、 TPC TPC是不被推荐的策略,因为他会为每个子类创建一个表,并且将父类中的所有属性映射进每个子类表中。..."); }); 注:参与TPC继承层次结构的表不共享主键,因此插入到子类表中的数据会存在重复的主键。
这在概念上类似于ADO.NET提供的数据库连接池,旨在节省一些DbContext实例初始化的成本。...} AND 11 ""ContactTitle"" = {contactTitle}") 12 .ToArray(); 13 } 上面的代码生成的...要使用表拆分,必须在共享表的所有实体类型之间配置标识关系(外键属性构成主键) 示例代码: 1 modelBuilder.Entity() 2 .HasOne(e => e.Details...包含定义导航的实体是所有者。当查询所有者时,默认将包含所属的类型。 按照惯例,将为所属类型创建一个影子主键,它将通过使用表拆分映射到与所有者相同的表。...一旦注册了方法,您就可以在查询的任何地方使用它。 要注意的几件事: 按照惯例,在生成SQL时,该方法的名称用作函数的名称(在本例中是用户定义的函数),但可以在方法注册期间重写名称和schema。
备用键 Alternate Keys是EF CORE引入的新功能,EF 6.X版本中并没有此功能。备用键可以用作实体中除主键和索引外的唯一标识符,还可以用作外键目标。...,我们也可以发现数据库在生成表时便指定了详细规则。...Post的BlogId建议外键默认的非聚集索引。...在EF CORE中,主体(Principal Entity)指的是包含主键/备用键的实体。所以在一般情况下,所有的实体都是主体。而主体键(Principal Key)指的是主体中的主键/备用键。...再次重申一遍,备用键和主键有相似之处,它通常用来指定一个明确的外键目标——当开发者不想用单纯无意义的Id作为外键标识时。
除了.NET数据提供程序外,我还得说说另外一位功臣:连接字符串(Connection Strings),它也为ADO.NET在解决“不同”与“一致”的矛盾中,贡献出了非常重要的力量。...我们已经知道,ADO.NET类库为不同的外部数据源提供了一致的访问。...典型的元素(键值对)应当包含这些信息:数据源是基于文件的还是基于网络的数据库服务器,是否需要账号密码来访问数据源,超时的限制是多少,以及其他相关的配置信息。...我们知道,值(value)是根据键(key)来确定的,那么键(key)如何来确定呢?语法并没有规定键(key)是什么,这需要根据你需要连接的数据源来确定的。...实际上,ADO.NET有一个专门的类来处理连接字符串:DbConnectionStringBuilder。DbConnectionStringBuilder类为强类型连接字符串生成基类。
在上一篇,大概介绍了Entity Framework Core关于关系映射的逻辑。在上一篇中留下了EF的外键映射没有说,也就是一对一,一对多,多对一,多对多的关系等。...意思就是无法定义一对一关系中的子/从属方 如何解决呢?之前在说的时候,EF会根据导航属性自动生成一个外键,但是这一条在一对一这里就有点不太起作用了。...所以我们必须手动在导航属性的一侧实体类里配置外键,并用 HasForeignKey指定。(如果不使用Fluent API,也是需要在一端实体类配置外键,另一端则不需要)。...的时候,EF会从SingleModel表中检索对应的外键关系,并引入进来。...其他数据库提示,外键不能为空。 所以也就是说EF不推荐这种双方互导航的一对一关系。
对于其他属性,EF会自动按照同名的形式映射到数据表中。 对于外键,如果在类里添加了引用类型,而这个引用类型也在EF的上下文中,EF会把这种属性称为导航属性。...EF一旦在类里检索到了导航属性,就会去寻找对应的外键。EF会认为 属性名+Id或者类名+Id 可能是外键属性,如果找到名称一致且类型与导航属性目标类的主键类型一致,则认为是外键。...如果没找到符合名称要求的属性,EF会自己添加一个外键属性。 对于一对一,EF要求导航属性双方都应该具有外键配置。 一对多,EF要求多的一方设置外键。...同时如果在一方这边设置了集合类型的导航属性,那么EF会自动到目标类里寻找外键属性。 说完了一对一和一对多,那么多对多呢? 如果没有声明的话, EF会生成一个中间表。 2....("TableName"); 设置表名 builder.HasKey(t => t.Id); //builder.HasKey(t => t.Id).HasName("KeyName"); 设置主键,如果不写后面的
前言 Model First我们称之为“模型优先”,这里的模型指的是“ADO.NET Entity Framework Data Model”,此时你的应用并没有设计相关数据库,在Visual Studio...中我们通过设计对于的数据模型来生成数据库和数据类。...”可以通过“Order”属性访问“Order”实体,并且添加了一个外键约束到“OrderDetail”中 ?...然后再点击完成即可,看到生成的Sql脚本。 ? 再然后,右键Sql脚本,点击执行 ? 最终数据库的此数据库多了两个表 ?...注意:如果我们的模型发生改变,只需要在模型设计视图修改模型,让后保存此时实体类就会相应改变,然后选择“从模型生成到数据库”重新执行生成的脚本即可。
这里的@JoinColumn是不一样的,它将生成一个外键字段,但不是生成在本实体类所代表的数据表中,而是生成在被关联的数据表中。...实际上一对多就是多对一的一个逆向的关联关系,但是两张表依然是通过一个外键列来维系,只不过这个外键列由谁生成的有点不同。具体的表结构此处不再贴出,我们通过插入数据来感受下一对多的关联关系表。...,hibernate首先会为我们插入四条userinfo记录到userinfo表中(其中的外键字段为空),然后插入一条记录到usersex表中,在这之后,hibernate将根据set集合中的元素依次执行这么一条...不过这种由一的一端管理关联关系的情况有点反常规逻辑,因此不建议用一的一端管理整个关联关系。 四、单向的多对多的关联关系映射 对于单向的多对多关联关系,我们无法使用外键列进行管理。...用于指定关联的实体类的外键列,我们这里在新表中会生成一列名hobbyid并依赖Hobby实体类的主键值。
获取指定字段 var a1 = dbContext.Articles.Select(x => new {x.Id, x.Title}).First(); 只获取外键id 1、在实体类中显式声明一个外键属性...2、关系配置中通过HasForeignKey(c=>c.ArticleId)指定这个属性为外键。...导航属性 由一个属性可以访问到另外一种类型的实体叫做导航属性 单向导航:不设置反向的属性,然后配置的时候WithMany()不设置参数即可。...("T_Students_Teachers")); //执行迁移后,会自动生成T_Students_Teachers中间表 基于关系的复杂查询 查询评论中含有“微软”的所有的文章: ctx.Articles.Where...ADO.NET Core Provider是不支持多个DataReader同时执行的。
简介 Dapper是介于Entity framework与ADO的折中选择。既满足手写查询的高性能需求,又简化了数据库对象映射为内存对象的繁杂工作。...要想不写sql愉快地增删改当然需要前期地配置。...ComputedAge => Age * 2; [Write(false)] public int NoWriteCol { get; set; } } 上面的Demo类里面包含了...Dapper.Contrib的所有实体配置选项 Table:指定实体对应地数据库表名,可忽略,但是忽略后实体对应地数据库表名会在末尾加个s,Demo对应Demos(感觉画蛇添足了) Key:指定此列为主键...区别是打上Key特性的列在插入时是不能指定值的,只能是数据库自动增长列,而ExplicitKey特性可以允许在插入时指定值,比如用guid为主键类型,则主键在插入时必须已经生成好。
CodeFirst提供了一种先从代码开始工作,并根据代码直接生成数据库的工作方式。Entity Framework 4.1在你的实体不派生自任何基类、不添加任何特性的时候正常的附加数据库。...OrderDetail类没有派生自任何基类,也没有附加EF特性,在将它们添加到上下文(上下文需要派生自DbContext)中时,会自动生成相应的数据表。...如果愿意的话,也可以将 [ComplexType] 标签加到类上来说明。然后,使用 Lambda 表达式将每一个子属性映射到列上,这将会生成如下的表。...publicstring EmployeeName { get; set; } publicvirtual List Orders { get; set; } } 有了这段代码,EF就会为我们创建一个订单与员工的对应关系表...每个类型一张表 TPT: 在继承层次中的每个类都分别映射到数据库中的一张表,彼此之间通过外键关联。
通过注解的方式来进行数据库的配置,以及SQL的查询,并且在编译的过程中,会检查SQL以及数据库配置等的正确性,同时也支持外键、事务等。...Room Database ObjectBox是非SQLite的ORM数据库框架,它自定义了自己的数据库文件,它的文件只有官方提供的工具才能打开,并且对于外键、主键等支持也比较完备,并且效率比Room...indices设置索引,如果需要保证属性数据的唯一性,则可以通过设置unique=true来保证 可以通过Entity中的foreignKeys来与另外一张表进行关联,设置外键 @Entity(tableName...Query可以定义参数,通过:param的方式在编译期间,生成对应的SQL语句,从而进行查询 剩下插入,删除,更新的可以定义单个或者多个对象进行批量更新 除了查询外的操作都会是一个Transaction...在编译完成后,如果没有问题,则会在/app/build/generated/source/apt/debug/pkg/下生成dao_IMPL类,以及数据库相应的包名下生成database_IMPL的类
功能 通过读取数据库的结构或是数据模型,生成标准的asp.net web UI表单 支持数据表新增,删除,修改,查询操作(CRUD),支持有关联关系的表操作和数据字段的验证 可以自动实现对有外键关联关系的表生成相应关联的...Data Model(数据模型) 数据模型代表的信息是在一个数据库中,以及在一个数据库项目中彼此相关的关系。 动态数据支持LINQ-to-SQL数据模型和ado.net实体框架数据模型。...您可以包括多个实例的数据模型在Web应用程序,但模式中使用的动态数据必须是同一类型。...棚架提供下列能力: 极少或根本没有的代码创建一个数据驱动的Web应用程序 快速发展 在数据库模型的基础上内置的数据验证 自动对每个数据字段创建外键或布尔类型类型等 Page Templates...Linq-to-Sql/Entity frameowk数据模型的字段验证,不能为空,外键约束,或是自定义验证逻辑 一个自动生成的网站截图 下面所有的操作,所有的页面都无需写一行代码和修改一行配置。
0.前言 上一章简单介绍了一下ORM框架,并手写了一个类似ORM的工具类。这一章将介绍一个在C#世界里大名鼎鼎的ORM框架——Entity Framework的Core版。...EF可以在不使用任何配置的前提下,自动解析类与表之间的映射(具体的映射逻辑与我们手写的ORM工具类一致或相近)。 自动跟踪更改。...可以延迟加载需要的数据,外键引用属性、查询结果等 丰富的映射关系,支持一对一,一对多,多对多,甚至继承、单表多实例等 可以使用Linq 进行查询 非Core版的可以通过数据库表生成实体类,两种都可以通过实体类生成表...基于 ADO.NET 的数据库连接和可用于连接到 SQL Server、Oracle、MySQL、SQLite、PostgreSQL、DB2 等 当然,还有一个特点:EF是约定优于配置,所以EF也可以配置...使用工具连接到blogging.db数据库,可以看到 EF自动生成的两个实体类对应表的DDL: CREATE TABLE "ModelBs" ( "Id" INTEGER NOT NULL CONSTRAINT
我们之前定义的数据库 schema 并不需要改变,仍然使用同样的表结构,因为在 “多” 这一方的表中已经有了关联键。...如果您想让该查询返回一个不同的类,比如 Pup 这样不是一个数据库实体但是包含了一些字段的对象。...记住,SQLite 中的外键会创建索引,并且会在更新或者删除表中数据时做级联操作。因此您要根据实际情况来判断是否使用外键功能。...ForeignKey: developer.android.google.cn/reference/a… SQLite 中的外键: sqlite.org/foreignkeys… 不管您是要使用一对一,...一对多还是多对多关系,Room 都会为您提供 @Relation 注解来解决问题。
领取专属 10元无门槛券
手把手带您无忧上云