我是EF的新手,如果我的词汇已关闭,请道歉!
如何访问模型中字段的小数精度?我想在尝试添加它之前验证传入的十进制数据,以确保它在SQL列的范围内?这就是我要找的东西:
我想检查模型而不是“幻数”,以便更改模型不需要更改验证码。
解决方案(根据评论中Paul Abbott的链接):
/// <summary>
/// Returns precision and scale for a decimal-typed Property of an EntityType
/// </summary>
public static Tuple<int, int> GetDecimalPrecisionAndScale(DbContext context, string tableName, string columnName)
{
var objectContext = ((IObjectContextAdapter)context).ObjectContext;
var entityType = objectContext.MetadataWorkspace.GetItems<EntityType>(DataSpace.CSpace)
.Where(e => e.Name == tableName).First();
var facets = entityType.Properties[columnName].TypeUsage.Facets;
int precision = Convert.ToInt32(facets["Precision"].Value);
int scale = Convert.ToInt32(facets["Scale"].Value);
return new Tuple<int, int>(precision, scale);
}