使用Context之外的方法返回不同的结果EF 6

时间:2017-11-07 15:14:58

标签: c# entity-framework reflection

我有方法,放在DbContext类,它从DB获取表名取决于类型:

 public Type GetDataType(Type type)
        {
                if (!type.IsSubclassOf(typeof(Test)))
                    throw new ArgumentException("The Wrong type provided. A subclass of Test is expected.");

                Type testType = GetEntityType(type);

                TestAttribute testAttribute = testType.GetCustomAttributes(false).OfType<TestAttribute>().SingleOrDefault() as TestAttribute;

                if (testAttribute == null)
                    throw new ArgumentException("Test attribute not found");

                Type result = testAttribute.DataType;         

                return result;             
        }


    public Type GetEntityType(Type type)
    {
        return type.Namespace == "System.Data.Entity.DynamicProxies" ? type.BaseType : type;
    }

我想要做的是将这些方法移到BL,但testAttribute之后变为null,尽管testType.GetCustomAttributes(false)在两种情况下返回相同的事实。

我的测试属性是:

[AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)]
    public class TestAttribute : Attribute
    {
        public Type DataType { get; private set; }

        public TestAttribute(Type dataType)
        {
            DataType = dataType;
        }
    }

我正在上课的是:

 [Test(typeof(testDataItem))]
    public class classTest : Test
    {
     //some fields
    }

我缺少什么?

0 个答案:

没有答案