从实体框架类获取默认sql值
本文关键字:默认 sql 获取 实体 框架 | 更新日期: 2023-09-27 18:12:02
我正在使用一个T4模板,从这个答案中提出的模板稍微修改,从我的EF poco生成typescript接口。
EF Core POCOs是先在数据库中生成的,部分数据库列有默认值。这些都被EF生成器正确地映射到我的上下文中,例如.HasDefaultValueSql("0")
;
我对如何访问给定EF类的默认值有点困惑,我曾认为GetValueOrDefault
可能会做到这一点,但这只是给。net类型的默认值。
我看到有一些其他的解决方案在那里得到这个工作,但我似乎找不到一个还与asp.net Core工作。
理想情况下,我想知道如何确定一个属性是否从它的MemberInfo中有一个默认的EF值,因为T4模板的下面一行正在生成属性描述,这将是最容易修改的,以输出TypeScript def的默认值。
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
等