关于 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

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

原文地址:https://www.cnblogs.com/yyjj/p/3683201.html