我有一个现有数据库,其中有四个相同和不相关的表。
我想使用同一个poco类来描述这四个类,而不必创建同一个类的副本。
这就是我目前的情况:

class StatsContext : DbContext
{
    // [MagicTableAttribute( "map_ratings_vsh" )] -- does something like this exist?
    public DbSet<MapRatings> MapRatingsVSH { get; set; }

    public DbSet<MapRatings> MapRatingsJump { get; set; }

    // 2 more tables using same class
}

class MapRatings
{
    public string SteamID { get; set; }

    public string Map { get; set; }

    public int Rating { get; set; }

    [Column( "rated" )]
    public DateTime Time { get; set; }
}

我的问题是,现有的表名为“MaMyRATIGNSHIVS VSH”和“MaMyRATIGNESSIX跳转”,我不能使用数据注释TableAttribute,因为它只能在类上使用。
有没有其他方法——也许是流畅的API——来描述我的模式?

最佳答案

我发现解决这个问题的一个方法是使用继承。

[Table("map_ratings_vsh")]
public class MapRatingsVSH : MapRatingsBase {}

[Table("map_ratings_jump")]
public class MapRatingsJump : MapRatingsBase {}

public class MapRatingsBase
{
    public string SteamID { get; set; }

    public string Map { get; set; }

    public int Rating { get; set; }

    [Column( "rated" )]
    public DateTime Time { get; set; }
}

然后您可以让dbcontext看起来像:
public class StatsContext : DbContext
{

    public DbSet<MapRatingsVSH> MapRatingsVSH { get; set; }

    public DbSet<MapRatingsJump> MapRatingsJump { get; set; }

}

ef在理解这是两个不同的表时不会有任何问题,即使实现将在同一个位置(MapRatingsBase

07-26 07:35