现阶段代码生成器有很多,其中我个人认为CodeSmith的功能最为强大。基本上你想要生成什么样的代码都可以根据模版来生成,模版有自带的,有别人编写的,当然,你觉得不够,也可以自己编写模版。
至于如何根据数据库生成实体类。
他的原理是数据库中的字段就是将来生成实体类中的私有变量和属性。
所以我们可以编写模版来读取数据库中的字段,然后来根据数据库中的字段来生成你所需要的变量和属性。
至于Codesmith的具体使用,比较简单,可以到网上搜索一下,有很多的介绍。
Sqlite数据库,在很多场合已经用得比较多,由于我的代码生成工具的需要,需要把Sqlite的表、字段、视图等信息获取出来,以便实现各种数据库快速生成项目工程的 *** 作。这里就需要利用C#获取Sqlite数据库的元数据了,和其他数据库一样。为了获取Sqlite的数据库对象数据,我做了一个测试的例子来获取他的相关信息,其实它的元数据还是和Access的 *** 作方式很接近。首先我们先通过Sqlite的数据库管理工具或者Visual Studio来打开创建一些表,如下所示。
首先我们先来看看通过C#代码获取到数据库对象的 *** 作界面,如下所示。
获取表的元数据界面效果如下所示,视图和这个也查不多,很有意思的一点,就是它把创建的脚本的显示出来了,呵呵。
获取的表字段信息效果如下所示。
有了这些数据,我就很方便在我的代码生成工具Database2Sharp里面实现代码生成 *** 作了。
现在我们来看看以上实现的后台代码是如何的,来了解Sqlite的数据库获取元数据的 *** 作。
string connectionString = ""
public Form1()
{
InitializeComponent()
connectionString = string.Format(@"Data Source={0}\OrderWater.dbVersion=3", Application.StartupPath)
}
private void btnGetSchema_Click(object sender, EventArgs e)
{
using (SQLiteConnection conn = new SQLiteConnection(connectionString))
{
conn.Open()
DataTable schemaTable = conn.GetSchema("TABLES")
this.dataGridView1.DataSource = schemaTable
}
}
获取表字段的 *** 作代码如下所示。
private void btnGetColumns_Click(object sender, EventArgs e)
{
using (SQLiteConnection conn = new SQLiteConnection(connectionString))
{
conn.Open()
DataTable table = conn.GetSchema("TABLES")
if (table != null &&table.Rows.Count >0)
{
string tableName = table.Rows[0]["TABLE_NAME"].ToString()
DataTable schemaTable = GetReaderSchema(tableName, conn)
this.dataGridView1.DataSource = schemaTable
}
}
}
1、先确保数据库相关的服务正确启动。
2、确保能打开相应的数据库。
3、确保所有的实体类都正确填写了、并且属性不能与数据库表字段相同。
4、编写hibernate.cfg.xml文件。
5、确保hibernate.cfg.xml文件有相应的配置Mappings。
6、运行项目在Tomcat服务器。
7、成功根据数据库表生成实体类。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)