EF4开始支持Model First技术,即可以先设计数据实体模型,然后生成具体的数据库结构。在VS2010 beta2中,
EF4默认支持生成MSSqlServer和SqlCE的DDL代码。对于希望定制化DDL输出或支持其他EF DB Provider的扩展需求,
MS就很乖巧的提供了t4模板给我们扩展。
我们可以在%Program Files%\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\DBGen
这个路径发现SSDLToSQL10.tt这个默认输出的模板。我就根据这份tt做蓝本,尝试按照SQLite的语法做了一份SSDLToSQLite3.tt的模板;
只要放到同一路径,我们就可以在EF的设计器的ConceptualEntityModel对象的DDL Generation Template的属性中选择各个t4模板。
扫描二维码关注公众号,回复:
6771517 查看本文章
SQLite很早就有.NET的实现,SQLite.NET也很早就开始支持EF了。我感觉最方便的就是在EF中设计实体模型,可以立刻生成SQLite的结构,
可以快速建立程序和测试环境。
1
2 -- --------------------------------------------------
3 -- Date Created: 12/12/2009 20:58:49
4 -- compatible SQLite
5 -- Generated from EDMX file: F:\vs10\ssdlTest\WindowsFormsApplication5\Model1.edmx
6 -- --------------------------------------------------
7 -- Dropping existing tables
8 -- --------------------------------------------------
9
10
11 DROP TABLE if exists [ ProductSet ] ;
12
13 DROP TABLE if exists [ OrderSet ] ;
14
15 DROP TABLE if exists [ AnimalSet ] ;
16
17 -- --------------------------------------------------
18 -- Creating all tables
19 -- --------------------------------------------------
20
21 -- Creating table 'ProductSet'
22 CREATE TABLE [ ProductSet ] (
23 [ ID ] integer PRIMARY KEY AUTOINCREMENT NOT NULL ,
24 [ Name ] varchar ( 50 ) NOT NULL ,
25 [ SinglePrice ] decimal ( 18 , 2 ) NULL ,
26 [ OrderId ] integer NOT NULL
27
28 , CONSTRAINT [ FK_OrderProduct ]
29 FOREIGN KEY ( [ OrderId ] )
30 REFERENCES [ OrderSet ] ( [ Id ] )
31
32 );
33
34 -- Creating table 'OrderSet'
35 CREATE TABLE [ OrderSet ] (
36 [ Id ] integer PRIMARY KEY AUTOINCREMENT NOT NULL ,
37 [ Name ] varchar ( 50 ) NOT NULL ,
38 [ IsEnabled ] boolean NOT NULL ,
39 [ Description ] varchar ( 200 ) NULL
40 );
41
42 -- Creating table 'AnimalSet'
43 CREATE TABLE [ AnimalSet ] (
44 [ FirstName ] char ( 20 ) NOT NULL ,
45 [ SecondName ] varchar ( 50 ) NOT NULL ,
46 [ Height ] decimal ( 26 , 5 ) DEFAULT ' 12.34 ' NOT NULL
47 , PRIMARY KEY ( [ FirstName ] , [ SecondName ] )
48 );
49
50
51 -- --------------------------------------------------
52 -- Script has ended
53 -- --------------------------------------------------
2 -- --------------------------------------------------
3 -- Date Created: 12/12/2009 20:58:49
4 -- compatible SQLite
5 -- Generated from EDMX file: F:\vs10\ssdlTest\WindowsFormsApplication5\Model1.edmx
6 -- --------------------------------------------------
7 -- Dropping existing tables
8 -- --------------------------------------------------
9
10
11 DROP TABLE if exists [ ProductSet ] ;
12
13 DROP TABLE if exists [ OrderSet ] ;
14
15 DROP TABLE if exists [ AnimalSet ] ;
16
17 -- --------------------------------------------------
18 -- Creating all tables
19 -- --------------------------------------------------
20
21 -- Creating table 'ProductSet'
22 CREATE TABLE [ ProductSet ] (
23 [ ID ] integer PRIMARY KEY AUTOINCREMENT NOT NULL ,
24 [ Name ] varchar ( 50 ) NOT NULL ,
25 [ SinglePrice ] decimal ( 18 , 2 ) NULL ,
26 [ OrderId ] integer NOT NULL
27
28 , CONSTRAINT [ FK_OrderProduct ]
29 FOREIGN KEY ( [ OrderId ] )
30 REFERENCES [ OrderSet ] ( [ Id ] )
31
32 );
33
34 -- Creating table 'OrderSet'
35 CREATE TABLE [ OrderSet ] (
36 [ Id ] integer PRIMARY KEY AUTOINCREMENT NOT NULL ,
37 [ Name ] varchar ( 50 ) NOT NULL ,
38 [ IsEnabled ] boolean NOT NULL ,
39 [ Description ] varchar ( 200 ) NULL
40 );
41
42 -- Creating table 'AnimalSet'
43 CREATE TABLE [ AnimalSet ] (
44 [ FirstName ] char ( 20 ) NOT NULL ,
45 [ SecondName ] varchar ( 50 ) NOT NULL ,
46 [ Height ] decimal ( 26 , 5 ) DEFAULT ' 12.34 ' NOT NULL
47 , PRIMARY KEY ( [ FirstName ] , [ SecondName ] )
48 );
49
50
51 -- --------------------------------------------------
52 -- Script has ended
53 -- --------------------------------------------------
这是模板: /Files/timiil/SSDLToSQLite3.zip
初步测试了一下,普通的外键关系,默认值等情况都没问题。各位在使用过程中如果发现有bug或对模板的修改,都请不吝指教。
转载于:https://www.cnblogs.com/timiil/archive/2009/12/12/1622676.html