[英]How do I automatically add interfaces to EF database first generated entities that have specific properties (column names) by editing T4 .tt templates
我有大约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);
}
希望这可以节省您一些时间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.