zoukankan      html  css  js  c++  java
  • 关于 Code First

    第一感觉还是很新鲜的,你可以自由的控制数据结构。

    比如,你想象oracle那样,给每个表增加4个字段,创建人,创建时间,更新人,更新时间。完全可以创建一个父类包含着四个属性(甚至可以把四个属性作为一个复杂类,在父类里声明一个对象成员),然后让所有的实体都继承这个类,这样ef自己生成的数据库表都会带有这4个字段

    甚至,你可以把所有表共用的字段提取出来,比如id,name,code,全部放在父类里,这样子类看起来明了多了

    当然,这好像有违poco的思想

    不好的地方当然也很突出,如果在开发过程中,数据结构需要变动,只能手工修改,没有有效的监管很容易遗漏变动。或者删除数据库,重新创建,这也很扯,开发过程中一般都会产生一些调试用的数据,总是删数据库会很麻烦,除非让开发人员把所有的数据都保存起来

    实体变动之后,运行程序会出错,不清楚ef是如何检测数据库的一致性的,只截获了几个sql

    SELECT Count(*) FROM sys.databases WHERE [name]=N'mydb'
    SELECT TABLE_SCHEMA SchemaName, TABLE_NAME Name FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE'
    SELECT 
    [GroupBy1].[A1] AS [C1]
    FROM ( SELECT 
        COUNT(1) AS [A1]
        FROM [dbo].[__MigrationHistory] AS [Extent1]
    )  AS [GroupBy1]


     
    SELECT TOP (1) 
    [Project1].[C1] AS [C1], 
    [Project1].[MigrationId] AS [MigrationId], 
    [Project1].[Model] AS [Model]
    FROM ( SELECT 
        [Extent1].[MigrationId] AS [MigrationId], 
        [Extent1].[Model] AS [Model], 
        1 AS [C1]
        FROM [dbo].[__MigrationHistory] AS [Extent1]
    )  AS [Project1]
    ORDER BY [Project1].[MigrationId] DESC

    内部原理未搞清楚,以后再搞

  • 相关阅读:
    Android studio关于点击事件后的页面跳转,选择完成后返回(onActivityResult)
    关于Android对话框简单实用方法总结
    Eclipse键盘输出文字,显示到屏幕上方法
    indexOf实际试用方法
    LiteOS裸机驱动移植01-以LED为例说明驱动移植
    LiteOS内核教程06-内存管理
    LiteOS内核教程05-互斥锁
    LiteOS内核教程04-信号量
    LiteOS内核教程03-任务管理
    LiteOS内核教程02-HelloWorld
  • 原文地址:https://www.cnblogs.com/yyjj/p/3683201.html
Copyright © 2011-2022 走看看