为了让Info类适合一些逻辑要求,本Info类代码生成器需要手工进行一些必要的配置。如:一个Table中有DepartmentId字段,在一般情况下也需要将DepartmentName加到Info类中;一个Table有详细记录列表,则一般情况下也应该在该Info类中加一个IList类型的容纳记录列表的字段等。
这些配置有些情况下是无法用代码自动完成的,所以必须手工配置。不过好在配置也并不复杂,而且一旦配置,后续就可以重复使用。其配置举例如下:
<?
xml
version
=”
1.0”
encoding
=”
utf-8”
?>
<
root
>
<
tables
>
<
item
name
=”
Department”
>
<
associations
>
<
item
name
=”
Departments”
from
=”
Department”
alias
=”
parent”
source
=”
DepartmentParent”
nullable
=”
true”
delete
=”
true”
/>
</
associations
>
</
item
>
<
item
name
=”
Employee”
>
<
additions
>
<
item
name
=”
DepartmentName”
from
=”
Department”
source
=”
DepartmentId”
target
=”
DepartmentId”
/>
<
item
name
=”
PositionName”
from
=”
Position”
source
=”
PositionId”
target
=”
PositionId”
/>
<
item
name
=”
EmployeeName”
alias
=”
ManagerName”
table
=”
Manager”
from
=”
Employee”
source
=”
EmployeeManager”
target
=”
EmployeeId”
/>
</
additions
>
</
item
>
</
tables
>
<
removes
>
<
item
name
=”
Table”
/>
</
removes
>
</
root
>
对于该Table已经存在的字段来说,则不用进行任何配置,我们需要配置的,只是一些“异常”的字段。如附加字段(置于additions标识下)、关联记录(置于associations标识下)等。
下面列举出主体部分的代码。其中处理较麻烦的部分在于有些字段可以为空,因此需要采用Nullable<>这样的范型类型。
for (
int i = 0; i < columns.Count; i++)
” [DataMember]” +
“\n”;
if (islinqs[i].ToString() ==
“True”)
string.Format(
” [Column(Storage = \”_{0}\”, DbType = \”{1}\”, CanBeNull = {2})]” +
“\n”, columns[i].ToString(), dbtypes[i].ToString(), canbenulls[i].ToString());
if (canbenulls[i] !=
null && canbenulls[i].ToString() ==
“true” && types[i].ToString() !=
“String”)
string.Format(
” public Nullable<{0}> {1}” +
“\n”, types[i].ToString(), columns[i].ToString());
else
string.Format(
” public {0} {1}” +
“\n”, types[i].ToString(), columns[i].ToString());
” {“ +
“\n”;
string.Format(
” get {
{ return this._{0}; }}” +
“\n”, columns[i].ToString());
string.Format(
” set {
{ this._{0} = value; }}” +
“\n”, columns[i].ToString());
” }” +
“\n”;
if (i != columns.Count – 1)
” “ +
“\n”;
至于XML的解析,可以采用反序列化的方法,直接一下子就把整个XML转化为类,这比起一步一步的解析XML来说,要容易得多了,具体请参考源代码。
转载于:https://blog.51cto.com/eallies/79012
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/111053.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...