Linq到SQL类型不匹配

时间:2016-06-11 05:19:06

标签: c# .net linq-to-sql

在阅读“ImageHighlight”表的内容时出现类型不匹配错误。

在designer.cs中,表格为:

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

在我的代码中,我尝试在LoadStaticCache()处的方法ApplicationStart中缓存一个小表,以便稍后通过GetHighlightImages()访问其内容。

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;我收到错误

  

无法隐式转换类型   System.Data.Linq.Table<HolidayRentals.Core.Domain.LinqToSql.ImageHighlight>   到HolidayRentals.Core.Domain.LinqToSql.ImageHighlight

它们都是同一类型。

1 个答案:

答案 0 :(得分:1)

datacontext.ImageHighlightsTableIQueryableImageHighlight_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;
    }
}