精华内容
下载资源
问答
  • 实体框架 (EF) 入门 => 二、全新的数据库中使用 Code First 学习资料:http://msdn.microsoft.com/zh-cn/data/jj193542 视频建立的控制台应用程序,我这里使用MVC。 一、非常有磁性的,非常优雅 很...

    实体框架 (EF) 入门 => 二、在全新的数据库中使用 Code First

    学习资料:http://msdn.microsoft.com/zh-cn/data/jj193542

    视频建立的控制台应用程序,我在这里使用MVC。

    一、非常有磁性的,非常优雅

    很喜欢看这个人的视频,虽然我听不太懂,也不知道他叫什么。他的声音非常有磁性,让我。。。,让我。。。。。。,百听不厌。

    看到了吗?他一边讲解,代码就一边流畅的显示在屏幕上,让你懂得,什么是优雅。

    原来也看过,但发现动手时还是无从下手,所以,不仅应该学习代码,还应该学习流程,先做什么,后做什么,为什么要这样做。

    二、建立MVC项目

    环境:vs.net2013 sql2008 ef6.1 mvc5

    image

    身份验证选择个人用户账户,只是免去自己添加验证JS的麻烦,实际开发使用  无身份验证。

    image

    image

    三、创建模型

    就像以前要先创建数据库一样,现在是先创建模型。

    image

    因为使用的是个人身份验证,所以系统自动生成一些Controler/Model/View,不用管它。

    image

    image

    image

    代码是我复制的,说明如下:

    1、BlogId 这样写能与外键列名保持一致,感觉这样好点

    2、类名用的是Blog,而不是Blogs。实体一般用单数,在生成数据表是,会自动添加成复数表名 Blogs。

    3、Post类还未建立,所以报错。但现在我们使用的是Code First,可以这样写,因为我们现在也不编译。在写一个实体类时,即使没有设计文档,心里也应该有个框框了,要建哪些实体,实体之间有什么关联。

    4、Post类一样使用单数形式,而集合使用的是同名复数 Posts 。

    5、virtual 用于延迟加载,也就是你在使用Blog实体对象时,如果不使用相关联的Post表中的数据,系统就不加载,你使用的时候,才到数据库查询相应的Post数据。

    这样可能要访问两次或多次数据库,所以一般不会使用延迟加载,而是在需要时将需要的字段一次性取回。

    因为是CodeFirst,所以,写实体属性时,应该也顺便将常规的特性加上:

    在Name上面输入[],在里面输入Display ,我就会拼这个单词,所以,每次都用她      微笑

    在Display上右键,导入命名空间。

    image

    也可以这样,输入完Display后按Ctrl + . ,然后回车,爽不?

    image

    弄成这样:

    image

    加上长度(20)还是有点用的,否则如果不小心输入了100个字符,不仅没有必要,你还要考虑列表显示的问题了。

    image

    四、创建上下文

    上面只是建立了两个实体类,如果要与数据库关联,还需要创建上下文。

    image

    image

    image

    五、安装(更新)EF,需要联网更新

    image

    若果你的VS界面下方没有 程序包管理控制台 ,按下面方式打开:

    image

    六、编辑web.config,添加连接字符串

    image

     

    下面该干嘛了?再看看视频

    七、生成界面

    因为是全新数据库,所以,建立了实体对象,并与上下文关联后,就可以直接写界面了。

    先编译一下。

    image

    image

    image

    八、删除原有数据库

    这时程序未运行,所以还不会生成数据库。

    先把原来的删掉,全新的吗,原来怎么应该有。

    image

    真真正正,干干净净

    九、运行列表页面

    image

    image

    空的

    十、添加记录

    image

    image

    十一,查看数据库

    刚才没用这个是因为连不上。

    image

    image

    image

     

    十二、模型更改

    1、Enable-Migrations

    2、修改实体对象

    image

    3、Add-Migration AddUrl

    4、Update-Database

    image

    十三、添加新模型

    image

    十四、将实体添加进上下文

    image

    十五、Add-Migration AddUser

    十六、Update-Database

    image

    分类: EntityFrameworkMVC
    展开全文
  • 可能细心的猿友已经注意到com.show.entity这个包下有个LendPK.java的实体类显得有些与众不同,其他的类都是正常的名字,为什么这个实体类偏偏多了一个PK的后缀呢?我来给大家解释一下吧,想必...

    上一篇博文中,我已经带领大家在Netbeans创建了实体类以及实体类的会话bean。

    所以,在这篇博文中将为大家展示在使用这些对数据库进行操作中我遇到的一些问题。


    下图是上次创建的实体类以及实体类的会话bean。



    可能细心的猿友已经注意到在com.show.entity这个包下有个叫LendPK.java的实体类显得有些与众不同,其他的类都是正常的名字,为什么这个实体类偏偏多了一个PK的后缀呢?


    我来给大家解释一下吧,想必大家都清楚这些实体类都分别对应着我们数据库中schema下的一个表,每个实体的实例对应了表里的一条记录。每个实体类的名字都和我们表名相同,每个实体类中的属性都分别对应着我们表中的列名。


    而这个多了个PK后缀的LendPK.java是复合主码组成的类。(我的这个lend表的主码是stuId和bookId),这个LendPK就是这两个属性的实体类。



    这个LendPK就涉及到了我们使用LendFacadeLocal的find方法对数据库进行查找时要注意的一个问题,这个find方法的形式参数必须是这个表的主码,也就是说我们在这个LendFacadeLocal使用find方法的时候传入的参数得是LendPK的一个实例化对象,并且这个对象的两个属性stuId和bookId不能为空。


    举个栗子,如果我们想查找一条stuId为1,bookId为1的借书记录,可以这么写:

    LendFacadeLocal lfl = new LendFacade();  //这里不太确定,一般是使用注入EJB的方法得到
    LendPK lendPK = new LendPK(1,1);   //使用set方法也可以
    Lend lend = lfl.find(lendPK);    //返回的Lend实例也就是我们要查询的那条借书记录了


    至于,如果我们想要不根据主码从数据库查询我们想要的值的话,就得手动的在LendFacadeLocal.java和LendFacade.java中编写函数来查询,这个我稍后会说。



    ②我们再来看看这些实体类的属性和方法,下面展示的是我的User实体类。





    我们可以看到这个user表(主码为id,类型为INT)对应到实体类User时id的数据类型便成了Integer,这样有什么好处呢?

    我们可以看到id被设置为AI,也就是我们在数据库中创建一行时是不知道主码id的值的,这时我们就得传入参数null来代替,这样如果id数据类型为int的话,很明显就会产生错误,使用Integer就能避免这个错误。


    我们以在数据库里的user表中新创建一行为例:

    UserFacadeLocal ufl = new UserFacade();    //这里不太确定,一般都是用注入的方式得到的,即@EJB UserFacadeLocal ufl; 
    User user = new User(null, "张三", "123", "12561256");   //这里参数的顺序得参照User实体类的构造方法,不能写叉劈了,当然这里也可以全部使用set方法
    user.setEmail("12567@163.com");  //我们注意到表中的email属性不是非空的,因此在构造函数里并没有对应的形参,得用set方法设置值(如果有的话)
    ufl.create(user);
    该说的,注释里都说了。这样,我们就可以在数据库里新建一行数据。


    以上解决的问题包含如何解决AI属性,以及如何解决可以为空的属性。


    ③自定义数据库操作。

    在上面这个图中的前面四个方法对应着数据库的增改删查,最后的int count()方法返回的是该表中元组的个数,也就是这个表的记录的个数。但是这个find方法具有局限性,只能通过主码来查。如果我们通过其他条件查询,就得自己写方法了,步骤如下(我以LendFacadeLocal为例):

    (1)首先在接口LendFacadeLocal写出函数的名称返回值类型参数等。

    比如说我想写个查询某人的借书记录,就得在这个LendFacadeLocal.java中增添如下语句。


    (2)然后在实现这个接口的LendFacade.java中实现增加的这个方法,最好不要在那个AbstractFacade这里编写:


    注意,这里使用的是JPQL进行查询。其中的:

    select c from Lend c where c.stuName=:userName
    中Lend是实体类的名字,也就是你想要操作表对应的实体类的名字,在我的这个栗子中,这些实体类都被放在了com.show.entity包下。

    以后我们调用这个方法的时候就可以像这样调用:

    LendFacadeLocal lfl = new LendFacade();  //这里不太确定,一般是通过注入EJB的方式得到
    List<Lend> lendList = lfl.findByUserName;


    以上只是个人愚见,如有不足,欢迎大家多多指教。


    展开全文
  • 有关数据库的设计

    2017-02-24 15:35:57
    数据库设计的设计内容包括:需求分析、... 将数据库中的数据实体及这些数据实体之间的关系,进行规划和结构化的过程就数据库设计  2.数据库设计非常重要  糟糕的数据库设计表现以下两个方面:  >效率低下
     数据库设计的设计内容包括:需求分析概念结构设计逻辑结构设计物理结构设计数据库的实施数据库的运行和维护
    一.什么是数据库设计
      1. 将数据库中的数据实体及这些数据实体之间的关系,进行规划和结构化的过程就叫数据库设计   
      2.数据库设计非常重要
          糟糕的数据库设计表现在以下两个方面:
               >效率低下
               >更新和检索数据时会出现许多问题
           良好的数据库设计表现在以下两个方面:
               >效率高
               >便于进一步扩展
               >使得应用程序的开发变得更容易
     二.设计数据库的步骤:
          无论数据库的大小,和复杂程度如何,在进行数据库的系统分析时,都可以参考下列基本步骤:
              1.收集信息
              2.标识实体
              3.标识实体之间的关系
     三.绘制E-R图
           1实体-关系模型
             ①.实体:
                 指的是现实世界中具有区分其他事物 的特征或者属性并与其他实体有联系的实体,如房间,客人等.
             ②.属性:
                 可以理解为实体的特征.
             ③.联系:
                  联系是两个或多个实体之间的关联关系
             ④.映射基数:
                  表示通过联系与该实体关联的其他实体的个数.实体集x和y之间的二元关系,映射基数必须为下列基数之一:
                          一对多      多对一   多对多    多对多
             ⑤.实体关系图:
                   矩形:实体集
                   椭圆形:属性
                   菱形:联系集
             
    展开全文
  • NoSQL:图数据库

    2018-10-15 22:17:13
    数据库可存放实体实体间关系。实体“节点”(node),它们具有属性(property)。可将节点视为应用程序某对象的实例。关系又“边”(edge),它们也有属性。边具备方向性(directional significance),...

    图数据库可存放实体及实体间关系。实体也叫“节点”(node),它们具有属性(property)。可将节点视为应用程序中某对象的实例。关系又叫“边”(edge),它们也有属性。边具备方向性(directional significance),而节点则按关系组织起来,以便在其中查找所需模式。用图将数据一次性组织好,稍后便可根据“关系”以不同方式解读它。


    什么是图数据库

    查询图也称“遍历”(traverse)图。图数据库的一个好处就是,无需改变节点或边,即可应对新的遍历需求。

    图数据库遍历“连接”及“关系”非常快。节点间的关系不在查询时计算,而是在创建时已经持久化了。遍历持久化之后的关系,要比每次查询时都计算关系更快。

    节点间可有多种不同的关系类型,这样既能表现领域实体(domain entity)之间的关系,也可以表示辅助关系(secondary relationship)。由于节点关系的数量及类型不限,所以这些关系可存放在同一图数据库中。


    图数据库的特性

    关系在图数据库中非常重要,图数据库中的大多数值都源自关系。关系不只含有类型、起始节点和终止节点,而且还有自己的属性。使用这些属性,可以让关系更智能。例如,可以指定两人之间何时成为朋友,两节点间距多远,两节点共享何种内容等。这些关系上的属性可用于查询图。

    • 一致性:图数据库通常不支持把节点分布在不同的服务器上。可以通过事务来保证一致性。不允许出现“悬挂关系”(dangling relationship):所有关系必须具备起始节点与终止节点,而且在删除节点前,必须先移除其上的关系。
    • 事务:Neo4J是兼容ACID事务的数据库,在修改节点或向现有节点新增关系前,必须先启动事务。
    • 可用性:Neo4J自1.8版本起,支持“副本从节点”(replicated salve),并借此获得较高的可用性。
    • 查询:图数据库可以使用Gremlin等查询语言。Gremlin是一门可以遍历图的领域特定语言(demain-specific language),它可以遍历所有实现了Blueprints属性图(property graph)的图数据库。
    • 可扩展性:因为图数据库不是面向聚合的(aggregate-oriented),而是面向关系的(relationship-oriented),所以对图数据库分片比较难。可以针对地理位置对数据进行分片。(参考:拆分数据库

    适用案例

    • 互联数据。部署并使用图数据库来处理社交网络非常高效。
    • 安排运输路线、分派货物和基于位置的服务。
    • 推荐引擎。

    不适用案例

    图数据库不适用于更新全部或某子集内的实体。因为没有什么简单的操作可以一次性改变所有节点中的某个属性,“全局图操作”(globa graph operation)非常耗费资源。


    想了解更多关于NoSQL数据库:NoSQL数据库专栏

    展开全文
  • 创建表时给表中添加约束,用来保证存放到数据库中的数据是有效的,即数据的有效性和准确性。 1.2 完整性的分类 实体完整性(行) 域完整性(列) 参照完整性(也引用完整性,关联表,创建表时设置) 1.2.1 ...
  • 实体:客观存在并可以相互区分的事物叫实体。实体型:具有相同属性的实体具有相同的特 征和性质,用实体名及其属性名集合来抽象和刻画同类实体,称为实体型。实体集:同型实 体的集合称为实体集。属性:实体所具有的...
  • 最近在开发遇到一个这样的问题,比方说我有一个实体Teacher在Teacher...一个是endTime,虽然这两个参数都是用来和createTime进行比较的,但是在数据库的表是没有这两个字段的,那我是否应该在实体添加...
  • 数据库的主键和外键

    千次阅读 2019-07-03 15:49:56
    数据库主键是指表中一个列或列的组合,其值能唯一地标识表的每一行。这样的一列或多列称为表的主键,通过它可强制表的实体完整性。...外键也FOREIGN KEY,是用于将两个表链接一起的键。 FOREIGN KEY...
  • spring boot 连接数据库

    千次阅读 2018-06-08 15:48:09
    学习spring boot 此记录下,有什么错误请指示用spring boot写一个项目(注意:其他包一律创建项目的入口下 比如 项目入口包名 com.test其他实体类、service、controllercom.test.xxx)1.项目的入口 创建好...
  • 数据库工具(MFC)

    2012-06-19 17:32:57
     1.1 显示多窗口代码:my_tab(是TAB CONTROL的实体)OnInitDialog写入 my_tab.InsertItem(0,_T("数据库登陆"));//要几个写几个,叫什么名字后面写什么  1.2 首先创建子窗口资源(DIALOG下):Style:CHILD ...
  • 什么叫不可分解呢?比如地址栏,有时候需要找到某个客户的所在城市,就不能把客户地址的省,市,详细地址放在一个栏目里,应如图所示: 这样就满足原子性了。 但第一范式有着比较多的问题,比如数据的冗余过...
  • 实体:客观存在并可以相互区分的事物叫实体。实体型:具有相同属性的实体具有相同的特征和性质,用实体名及其属性名集合来抽象和刻画同类实体,称为实体型。实体集:同型实体的集合称为实体集。属性:实体所具有的某...
  • 今天主要跟大家分享一下什么是 CQRS,以及项目如何去使用。 CRUD系统 我们平常最熟悉的就是三层架构,通常都是通过数据访问层来修改或者查询数据,一般修改和查询使用的是相同的实体。然后通过业务层来处理业务...
  • 今天主要跟大家分享一下什么是 CQRS,以及项目如何去使用。 CRUD系统 我们平常最熟悉的就是三层架构,通常都是通过数据访问层来修改或者查询数据,一般修改和查询使用的是相同的实体。然后通过业务层来...
  • 三层架构——实体

    千次阅读 热门讨论 2013-04-20 14:52:39
    可能有人发现了,敲登陆Demo的时候,需要把输入的控件内容(也就是数据)先填充到实体类,然后再通过数据访问层Update/Delete/Select/Add到数据库中去。这时我们会发现出现了叫实体类的东西。那么什么是实体类?...
  • 先说Java面向对象,面向对象是围绕现实世界的概念来组织系统模型的一种崭新的思维方式,其基本构造是对象,这些对象把特定的数据以及与该数据相关的行为或操作、方法紧密的结合一起组成单一实体,而面向对象把...
  • 1、什么是乐观锁? 乐观锁:十分乐观,它总是认为不会出现...(1)首先,在数据库添加int类型的字段,名字version,默认值为1。 (2)然后对应的更新实体类,加上字段,并使用@Version注解: @Version private
  • ORM思想

    2020-10-07 23:56:17
    在类中属性 在数据库中叫字段 让这二者对应 使用配置文件方式完成使其不需要直接操作数据库表 而是操作类中的实体类对象 通过Hibaernate封装的对象Seesion来实现 如果不适用orm思想来操作数据库的话就得用jdbc ...
  • 介绍 DAO层 dao层数据访问层,全称为data ...java接口是多继承的,而类是单继承的,如果你需要一个类实现多个service,你用接口可以实现,用类定义service就没那么灵活 要提供不同的数据库的服务时,我们只需要
  •  74简述关系数据库中关系具有的性质?P139  75简述E-R图中实体之间联系的类型?P139  76简述由E-R图向关系模型转换的规则?P140  77简述计算机主机选型的步骤?P140  78系统软件主要包括哪些内容?P140 ...
  • 定义实体 用鼠标双击实体的符号,可以进入实体的属性页。...Code:模型转化时一般作为对象的物理名称,比如把实体属性的Code转化为数据库中的列名,当然我们现在不必为了这个实体将来叫什么而费神,一般采取...
  • Hibernate框架包

    2018-09-09 10:51:53
    也就是我们电脑的磁盘上,为什么叫持久化呢,就是数据能够保存的很久,所以叫持久化,现在对持久化的实现过程大多通过各种关系型数据库完成,所以我们常说的,将数据保存到数据库中,其实是数据库帮我们帮数据保存到...
  • 2)什么叫数据库模式? 哪些数据库支持硬模式,哪些是无模式的,哪些支持存储半结构化数据? schema是数据库表的数据结构,RDBMS,比如PostgreSQL,每个数据库表都应该有一个固定的数据结构。 Schemaless是指...
  • 秒杀系统总结

    2018-03-11 10:22:14
    以前做的项目不项目,太过粗糙,没有考虑的东西太多,更谈不上优化这次的小项目明确了对dto,exception,enum这些层的作用dto:类似entity都是封装实体,entity封装的是数据库表的实体,dto是封装结果集或者...

空空如也

空空如也

1 2 3 4 5
收藏数 82
精华内容 32
关键字:

在数据库中什么叫实体