如何在EF模型中访问小数成员的精度方面?

时间:2015-01-20 19:47:02

标签: entity-framework edmx

我是EF的新手,如果我的词汇已关闭,请道歉!

如何访问模型中字段的小数精度?我想在尝试添加它之前验证传入的十进制数据,以确保它在SQL列的范围内?这就是我要找的东西:

Decimal member properties facet

我想检查模型而不是“幻数”,以便更改模型不需要更改验证码。

解决方案(根据评论中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);
}

0 个答案:

没有答案