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

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

  • 相关阅读:
    EasyUI Combobox组合框(模糊搜索、默认值绑定)
    Asp.Net下载文件时中途失败问题
    VS使用小技巧之——设置调试时启动项目和启动页
    VS使用小技巧之——给代码添加region
    VS使用小技巧之——引入整个文件夹
    VS使用小技巧之——任务列表
    FineUI给表格行内链接设置弹出窗体
    cnpm私服搭建和发布包
    阿里云产品术语和docker
    angularjs1.x的一些知识点整理
  • 原文地址:https://www.cnblogs.com/yyjj/p/3683201.html
Copyright © 2011-2022 走看看