我使用的是 T4 模板,对中提出的模板稍加修改this https://stackoverflow.com/a/15936878/1641172答案是从我的 EF POCO 生成打字稿接口。
EF Core POCO 首先生成数据库,并且某些数据库列具有默认值。这些由 EF 生成器正确映射到我的上下文中,例如.HasDefaultValueSql("0")
;
我对如何访问给定 EF 类的默认值有点困惑,我曾想过GetValueOrDefault
可能可以解决问题,但这只是给出 .net 类型的默认值。
我看到还有一些其他解决方案可以实现此功能,但我似乎找不到可以与 ASP .Net Core 一起使用的解决方案。
理想情况下,我想知道如何确定属性是否具有来自其 MemberInfo 的默认 EF 值,因为 T4 模板中的以下行正在生成属性描述,因此最容易修改该属性以输出默认值TypeScript 定义
foreach (MemberInfo mi in GetInterfaceMembers(t))
{
sb.AppendFormat(" {0}: {1};\n", mi.Name, GetTypeName(mi));
}
如果您有权访问生成的DbContext
,您可以使用由DbContext.Model
而不是反思。
例如:
foreach (var type in db.Model.GetEntityTypes())
{
foreach (var property in type.GetProperties())
{
var defaultValue = property.Relational().DefaultValue;
}
}
还有很多有用的方法,比如IModel.FindEntityType
, IEnityType.FindProperty
etc.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)