在LinqDataSource的数据上下文类型"A"中,未能找到名为"B"的属性或字段?

时间:2021-08-18 20:51:12
类型"A"为上下文类型,其中属性"B"为List
编译无错误,数据源的配置是通过向导生成的,调试过程中网页中报出标题所示的错误
baidu,google了很久都没找到类似的错误,只好请教各位大虾怎么回事?
网页代码如下

        <asp:Chart ID="chartData" runat="server" Width="280px" 
            DataSourceID="LinqDataSource">
            <Series>
                <asp:Series Name="series" XValueMember="Date" YValueMembers="Volume">
                </asp:Series>
            </Series>
            <ChartAreas>
                <asp:ChartArea Name="chartArea">
                </asp:ChartArea>
            </ChartAreas>
        </asp:Chart>
        <asp:LinqDataSource ID="LinqDataSource" runat="server" 
            ContextTypeName="A" EntityTypeName="" 
            TableName="B">
        </asp:LinqDataSource>

15 个解决方案

#1


看看你的linq to sql生成Context 类中是不是有类似下面的属性。你要找的属性的名字应该是A,我这里是authors

public partial class DataClasses1DataContext : System.Data.Linq.DataContext
{
   ....
   public System.Data.Linq.Table<author> authors
   {
get
{
return this.GetTable<author>();
}
   }

   ....
}

#2


看看你的linq to sql生成Context 类中是不是有类似下面的属性。你要找的属性的名字应该是A,我这里是authors

public partial class DataClasses1DataContext : System.Data.Linq.DataContext
{
   ....
   public System.Data.Linq.Table<author> authors
   {
get
{
return this.GetTable<author>();
}
   }

   ....
}

#3


看看你的linq to sql生成Context 类中是不是有类似下面的属性。你要找的属性的名字应该是A,我这里是authors

public partial class DataClasses1DataContext : System.Data.Linq.DataContext
{
   ....
   public System.Data.Linq.Table<author> authors
   {
get
{
return this.GetTable<author>();
}
   }

   ....
}

#4


我没有使用linq to sql生成context类,上下文类型是我自己写的,也没有继承DataContext类

按照msdn的说法,LinqDataSource的数据源可以是内存中的数据集合

代码如下

    public class A
    {
        ...
        public List<Q> B{ get; set; } // Q为数据源类型
        ...
    }

#5


我没有使用linq to sql生成上下文类型,A类是一个普通类, 没有继承DataContext

按照msdn的说法,LinqDataSource的数据源可以是内存中的数据集合,我的代码如下:


    public class A
    {
        ......
        public List<Q> B // Q为数据源类型
        ......
    }

#6


顶一下,貌似今天早上csdn不太正常,发的有点乱

#7


估计的用System.Data.Linq.Table<Q>这种类型

#8


自定义数据源然后付值给控件,尽可能不用现成的控件

#9


引用 7 楼 findcaiyzh 的回复:
估计的用System.Data.Linq.Table<Q>这种类型


MSDN上是这么说的:

When you are connecting to an in-memory data collection, set the TableName property to the name of the property or field that returns the data collection.

You can assign a property that returns any type to the TableName property for retrieval operations. If the object that is represented by the property does not implement IEnumerable, the LinqDataSource control will automatically wrap the object in an instance of an IEnumerable object.

MSDN上的例子也是一个数组类型
http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.linqdatasource.tablename.aspx

#10


引用 8 楼 q107770540 的回复:
自定义数据源然后付值给控件,尽可能不用现成的控件


这样做当然可以,事实上我现在也是这么解决的,我只是想知道这个问题的答案

#11


再顶一下,希望明天早上有人回复,睡觉

#12


有回复的,不过是来学习的。
飘过

#13


从你现在提供的资料看不出哪里的问题。
下面是我的测试代码,没有问题


  <asp:LinqDataSource ID="LinqDataSource1" runat="server" 
        ContextTypeName="TestSiteMap.CarsContext" EntityTypeName="" TableName="Cars">
    </asp:LinqDataSource>

    <br />
    <asp:GridView ID="GridView1" runat="server" DataSourceID="LinqDataSource1">
    </asp:GridView>



namespace TestSiteMap
{
    public class Car
    {
        public string Wheels { get; set; }
        public string Doors { set; get; }
    }

    public class CarsContext
    {
        private List<Car> cars = new List<Car>()
        {
            new Car(){Wheels = "4", Doors = "4"},
            new Car(){Wheels = "2", Doors = "1"}
        };

        public List<Car> Cars
        {
            get { return cars; }
            set { cars = value; }
        }
    }
}

#14


对了我的测试工程是vs2010 .net 4.0

#15


引用 13 楼 findcaiyzh 的回复:
从你现在提供的资料看不出哪里的问题。
下面是我的测试代码,没有问题

HTML code

  <asp:LinqDataSource ID="LinqDataSource1" runat="server" 
        ContextTypeName="TestSiteMap.CarsContext" EntityTypeName="" TableName="Cars">
    ……


你的测试在我的电脑上也通过了,我的环境和你一样,可是我的问题依然存在。。。

看来问题不是来自LinqDataSource本身。

结贴了,分给你,谢谢你帮我测试

#1


看看你的linq to sql生成Context 类中是不是有类似下面的属性。你要找的属性的名字应该是A,我这里是authors

public partial class DataClasses1DataContext : System.Data.Linq.DataContext
{
   ....
   public System.Data.Linq.Table<author> authors
   {
get
{
return this.GetTable<author>();
}
   }

   ....
}

#2


看看你的linq to sql生成Context 类中是不是有类似下面的属性。你要找的属性的名字应该是A,我这里是authors

public partial class DataClasses1DataContext : System.Data.Linq.DataContext
{
   ....
   public System.Data.Linq.Table<author> authors
   {
get
{
return this.GetTable<author>();
}
   }

   ....
}

#3


看看你的linq to sql生成Context 类中是不是有类似下面的属性。你要找的属性的名字应该是A,我这里是authors

public partial class DataClasses1DataContext : System.Data.Linq.DataContext
{
   ....
   public System.Data.Linq.Table<author> authors
   {
get
{
return this.GetTable<author>();
}
   }

   ....
}

#4


我没有使用linq to sql生成context类,上下文类型是我自己写的,也没有继承DataContext类

按照msdn的说法,LinqDataSource的数据源可以是内存中的数据集合

代码如下

    public class A
    {
        ...
        public List<Q> B{ get; set; } // Q为数据源类型
        ...
    }

#5


我没有使用linq to sql生成上下文类型,A类是一个普通类, 没有继承DataContext

按照msdn的说法,LinqDataSource的数据源可以是内存中的数据集合,我的代码如下:


    public class A
    {
        ......
        public List<Q> B // Q为数据源类型
        ......
    }

#6


顶一下,貌似今天早上csdn不太正常,发的有点乱

#7


估计的用System.Data.Linq.Table<Q>这种类型

#8


自定义数据源然后付值给控件,尽可能不用现成的控件

#9


引用 7 楼 findcaiyzh 的回复:
估计的用System.Data.Linq.Table<Q>这种类型


MSDN上是这么说的:

When you are connecting to an in-memory data collection, set the TableName property to the name of the property or field that returns the data collection.

You can assign a property that returns any type to the TableName property for retrieval operations. If the object that is represented by the property does not implement IEnumerable, the LinqDataSource control will automatically wrap the object in an instance of an IEnumerable object.

MSDN上的例子也是一个数组类型
http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.linqdatasource.tablename.aspx

#10


引用 8 楼 q107770540 的回复:
自定义数据源然后付值给控件,尽可能不用现成的控件


这样做当然可以,事实上我现在也是这么解决的,我只是想知道这个问题的答案

#11


再顶一下,希望明天早上有人回复,睡觉

#12


有回复的,不过是来学习的。
飘过

#13


从你现在提供的资料看不出哪里的问题。
下面是我的测试代码,没有问题


  <asp:LinqDataSource ID="LinqDataSource1" runat="server" 
        ContextTypeName="TestSiteMap.CarsContext" EntityTypeName="" TableName="Cars">
    </asp:LinqDataSource>

    <br />
    <asp:GridView ID="GridView1" runat="server" DataSourceID="LinqDataSource1">
    </asp:GridView>



namespace TestSiteMap
{
    public class Car
    {
        public string Wheels { get; set; }
        public string Doors { set; get; }
    }

    public class CarsContext
    {
        private List<Car> cars = new List<Car>()
        {
            new Car(){Wheels = "4", Doors = "4"},
            new Car(){Wheels = "2", Doors = "1"}
        };

        public List<Car> Cars
        {
            get { return cars; }
            set { cars = value; }
        }
    }
}

#14


对了我的测试工程是vs2010 .net 4.0

#15


引用 13 楼 findcaiyzh 的回复:
从你现在提供的资料看不出哪里的问题。
下面是我的测试代码,没有问题

HTML code

  <asp:LinqDataSource ID="LinqDataSource1" runat="server" 
        ContextTypeName="TestSiteMap.CarsContext" EntityTypeName="" TableName="Cars">
    ……


你的测试在我的电脑上也通过了,我的环境和你一样,可是我的问题依然存在。。。

看来问题不是来自LinqDataSource本身。

结贴了,分给你,谢谢你帮我测试