如果主键设置为自动增量,如何检查使用实体框架?

时间:2017-09-03 19:45:57

标签: c# entity-framework

我正在寻找一种检查我的主键是否设置为自动增量的方法。

感谢任何帮助/建议!

编辑:

我有通用表格,例如(我的Crud设计目前不完整)

MyTestForm2上的工具条会改变3个按钮的位置,添加,编辑和观看

我问这个问题的原因是:在我提供的示例中,字段CB_REFNO是主键+它是自动递增的。在添加/编辑时我希望该文本框的启用属性设置为false,但如果它不是自动递增,则用户需要设置它或能够编辑它。这就是我问这个问题的原因

enter image description here

1 个答案:

答案 0 :(得分:0)

我提出了一个解决方案,但不是绝对的解决方案。如果您的主键是int类型且不是自动递增,那么将无法工作,因此只要您在A

中只有int类型主键
public static bool MyIsAutoIncrement<TEntity>(this DbContext pContext) where TEntity : class
    {
        var objectContext = ((IObjectContextAdapter)pContext).ObjectContext;
        var set = objectContext.CreateObjectSet<TEntity>();

        var myPkTypeKind = (PrimitiveTypeKind)set.EntitySet.ElementType.KeyMembers[0].GetPropValue("PrimitiveType").GetPropValue("PrimitiveTypeKind");

        switch (myPkTypeKind)
        {
            case PrimitiveTypeKind.Int16:
                return true;
            case PrimitiveTypeKind.Int32:
                return true;
            case PrimitiveTypeKind.Int64:
                return true;
        }
        return false;
    }