如何通过编辑T4.tt模板自动将接口添加到EF数据库首次生成的具有特定属性(列名)的实体中



我有大约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);
}

希望这能帮你节省一些时间。

相关内容

  • 没有找到相关文章

最新更新