我有大约50个数据库,每个数据库有150个表,并使用搜索机制来查询具有特定列的表。大多数数据库结构都是相同的,所以我们的想法是生成EF实体,并在生成实体的表中有特定列的情况下将接口放在生成的实体后面,这样我以后就可以查询该列了。
模型可能会不断变化,所以我不能手动在表上添加接口——这里是T4模板。
我正在寻找一种机制,允许我根据实体上的列名在实体上添加接口,这些接口是从生成的
在.tt
文件中,按以下方式修改EntityClassOpening
方法。
stringsToMatch
字典key
是表上的列名,value
是您要放在生成的实体上的接口。
public string EntityClassOpening(EntityType entity)
{
var stringsToMatch = new Dictionary<string,string> { { "POLICY_NO", "IPolicyNumber" }, { "UNIQUE_ID", "IUniqueId" } };
return string.Format(
CultureInfo.InvariantCulture,
"{0} {1}partial class {2}{3}{4}",
Accessibility.ForType(entity),
_code.SpaceAfter(_code.AbstractOption(entity)),
_code.Escape(entity),
_code.StringBefore(" : ", _typeMapper.GetTypeName(entity.BaseType)),
stringsToMatch.Any(o => entity.Properties.Any(n => n.Name == o.Key)) ? " : " + string.Join(", ", stringsToMatch.Join(entity.Properties, l => l.Key, r => r.Name, (l,r) => l.Value)) : string.Empty);
}
希望这能帮你节省一些时间。