获取特定表的列表?

时间:2017-07-31 19:04:48

标签: asp.net-mvc entity-framework

是否可以在EF中为特定的表/类设置属性,然后根据该属性查询这些表的列表?

2 个答案:

答案 0 :(得分:1)

添加属性partial类。然后在当前程序集中获取具有该属性的类型列表

Assembly thisAsm = Assembly.GetExecutingAssembly();
var tableTypes = thisAsm.GetTypes()
    .Where(t => t.IsDefined(typeof(MyAttribute), false));

答案 1 :(得分:0)

好的,我认为我没有使用程序集就可以使用它:

public class FoodAttribute : Attribute { }
public class Fruit { }
public class Coin { }
public class Cereal { }

public class FooContext : DbContext {
    [Food]
    public virtual DbSet<Fruit> Fruits { get; set; }
    public virtual DbSet<Coin> Coins { get; set; }
    [Food]
    public virtual DbSet<Cereal> Cereals { get; set; }
}

获取具有Food:

属性的表列表
var tableList = typeof(FooContext).GetProperties()
    .Where(n => n.IsDefined(typeof(ClientTraitAttribute)))
    .Select(n => n.PropertyType.GetGenericArguments()[0].Name).ToList();

感谢Yuriy向我展示了IsDefined方法! :d