[NFrog]增加新的数据库生成器
数据库生成器可让NFrog工具向数据库导出结构、从数据库导入结构生成实体。一个生成器一般负责一种数据库,如工具自带的AccessControl负责Access2K数据库的导入、导出。
引用
添加对NHFrog.Generator.Schema.Forms.dll的引用
继承
所在生成器都需要继承自DbSelect。DbSelect本身是一个用户自下定义控件,所以说每个生成器都是一个自定义控件。以下是DbSelect的源代码
属性中比较重要是Server,他的类型是DbServer。DbSelect和DbServer是构成生成器的两个基类。看Access2K是如何继承自该两基类的
继承自DbServer的子类,必须是可序列化的。AccessServer中的OleDbSchema 是项目自定义的一个类,目的是为NextTable、NextColumn方法服务以方便查询数据结构。
配置
生成dll文件后,拷贝到工具目录中,并打开frog.config文档,为dll文件新增<ConnectBuilders>节点
引用
添加对NHFrog.Generator.Schema.Forms.dll的引用
继承
所在生成器都需要继承自DbSelect。DbSelect本身是一个用户自下定义控件,所以说每个生成器都是一个自定义控件。以下是DbSelect的源代码
public class DbSelect:System.Windows.Forms.UserControl
{
public DbSelect()
{
}
public virtual string SelectorName
{
get{return "";}
}
public virtual string ConnectString
{
get{return null;}
}
public virtual DbServer Server
{
get{return null;}
}
public override string ToString()
{
return this.SelectorName;
}
}
{
public DbSelect()
{
}
public virtual string SelectorName
{
get{return "";}
}
public virtual string ConnectString
{
get{return null;}
}
public virtual DbServer Server
{
get{return null;}
}
public override string ToString()
{
return this.SelectorName;
}
}
属性中比较重要是Server,他的类型是DbServer。DbSelect和DbServer是构成生成器的两个基类。看Access2K是如何继承自该两基类的
public class AccessControl : DbSelect
{
//.省略部分代码
public override string SelectorName
{
get{return "Access";}
}
public override DbServer Server
{
get{return new AccessServer(this.txtFile.Text);}
}
public override string ConnectString
{
get{return string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}",this.txtFile.Text);}
}
}
{
//.省略部分代码
public override string SelectorName
{
get{return "Access";}
}
public override DbServer Server
{
get{return new AccessServer(this.txtFile.Text);}
}
public override string ConnectString
{
get{return string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}",this.txtFile.Text);}
}
}
[Serializable]
public class AccessServer:DbServer
{
[NonSerialized()]
private OleDbSchema schema;
public AccessServer(string pFilePath):base(string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}",pFilePath))
{
this.schema = null;
}
重写父类成员
}
public class AccessServer:DbServer
{
[NonSerialized()]
private OleDbSchema schema;
public AccessServer(string pFilePath):base(string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}",pFilePath))
{
this.schema = null;
}
重写父类成员
}
继承自DbServer的子类,必须是可序列化的。AccessServer中的OleDbSchema 是项目自定义的一个类,目的是为NextTable、NextColumn方法服务以方便查询数据结构。
配置
生成dll文件后,拷贝到工具目录中,并打开frog.config文档,为dll文件新增<ConnectBuilders>节点
<ConnectBuilders>
<Assembly>NHFrog.Generator.Schema.Forms.dll</Assembly>
</ConnectBuilders>
<Assembly>NHFrog.Generator.Schema.Forms.dll</Assembly>
</ConnectBuilders>