第一感觉还是很新鲜的,你可以自由的控制数据结构。
比如,你想象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
内部原理未搞清楚,以后再搞