EF:许多具有相同列的表 - 我可以在不复制代码的情况下访问它吗?

时间:2012-09-06 16:19:36

标签: entity-framework

我有一些存储文件数据的表格,例如TabATabBTabC,... TabX。它们中的每一个都有相同的列FileTypeID

对于每个表,我需要使用扩展方法来获取行,具体取决于FileTypeID列的条件。为此,我有一个类似的扩展方法:

public static class FilesTab_Extenders
{
    public static IList<TabA> GetSpecificFiles(this EntityCollection<TabA> mc)
    {
        ///
    }
}

但是,我不想盲目地为其余表克隆相同的代码。唯一的区别是参数 - this EntityCollection<TabB>this EntityCollection<TabC>等等。那么,是否有可能为该场景制作通用代码?

1 个答案:

答案 0 :(得分:1)

对我而言,最简单的方法是使用界面。然后,您将使用您的部分类实现此接口并在您的扩展方法中使用它:

public interface IFileTypeable
{
    Guid FileTypeId { get; set;}
}

现在,您将为此模板后面的每个TabA,TabB,TabC,... TabX创建部分类文件:

namespace MyDBContextNamespace
{
    public partial class TabA : IFileTypeable
    {
        // no need to do anything, the property is already implemented on the original class file.
    }

    public partial class TabB : IFileTypeable
    {
        // no need to do anything, the property is already implemented on the original class file.
    }
}

最后,您的扩展方法将更改为如下所示:

public static IList<IFileTypeable> GetSpecificFiles(this EntityCollection<IFileTypeable> mc)             
{             
    foreach (var item in mc)
    {
        Guid fileTypeId = item.FileTypeId;       
    }
}