Linq to SQL 类型不匹配

Linq to SQL type mismatch

读取 table 'ImageHighlight' 的内容时出现类型不匹配错误。

在 designer.cs 中 table 是:

public System.Data.Linq.Table<ImageHighlight>ImageHighlights
{
    get
    {
        return this.GetTable<ImageHighlight>();
    }
}

在我的代码中,我试图在 ApplicationStart 的方法 LoadStaticCache() 中缓存一个小的 table,这样我以后可以通过 GetHighlightImages().[=20 访问它的内容=]

public class StaticCache
{

    private static ImageHighlight _images = null;

    public static void LoadStaticCache()
    {
        // Get images - cache using a static member variable
        using (var datacontext = new MHRDataContext())
        {
            _images = datacontext.ImageHighlights;
        }
    }
     public static ImageHighlight GetHighlightImages()
    {
        return _images;
    }
}

在代码行 _images = datacontext.ImageHighlights; 我收到错误

Cannot implicitly convert type System.Data.Linq.Table<HolidayRentals.Core.Domain.LinqToSql.ImageHighlight> to HolidayRentals.Core.Domain.LinqToSql.ImageHighlight

它们是同一类型。

datacontext.ImageHighlightsTable,它是 ImageHighlightIQueryable_images 的类型是 ImageHighlight。您不能将这些类型相互转换。

既然你想要一些缓存机制并且_images表明它应该包含多个图像实例那么你应该改变_images的类型。

将您的代码更改为:

public class StaticCache
{

    private static List<ImageHighlight> _images = null;

    public static void LoadStaticCache()
    {
        // Get images - cache using a static member variable
        using (var datacontext = new MHRDataContext())
        {
            _images = datacontext.ImageHighlights.ToList();
        }
    }
    public static List<ImageHighlight> GetHighlightImages()
    {
        return _images;
    }
}