BC30002: Type 'Column' is not defined. Error when usign Linq to SQL class

Hi Experts

I am getting this error when running a page with a gridview bound to a LinqDataSource that is using a Linq to SQL class as its data context.

The error is pointing to the line below in the designer.vb file

Line 907:      <Column(Storage:="_Management_System_ID", DbType:="Int")>  _
Line 908:      Public Property Management_System_ID() As System.Nullable(Of Integer)

Any ideas?

Thanks

Stewart
LVL 2
digital_soulAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Bob LearnedCommented:
The ColumnAttribute class is defined in the System.Data.Linq.Mapping namespace, which is in the System.Data.Linq assembly.  You need a reference to this assembly in your project.
0
digital_soulAuthor Commented:
The auto genarated Class file where the error is occuring does include

Imports System.Data.Linq
Imports System.Data.Linq.Mapping
0
Bob LearnedCommented:
That is an Imports statement, but you also need a reference in your project to the System.Data.Linq assembly.
0
Cloud Class® Course: Microsoft Exchange Server

The MCTS: Microsoft Exchange Server 2010 certification validates your skills in supporting the maintenance and administration of the Exchange servers in an enterprise environment. Learn everything you need to know with this course.

digital_soulAuthor Commented:
In Visual Studio I am selecting Add reference and then selecting System.Data.Linq but its still not working.

Should doing this create a reference in my Web.Config file?
0
Bob LearnedCommented:
Are you working with a web application or web site (project file or not)?
0
digital_soulAuthor Commented:
Yes its a Project file
0
Bob LearnedCommented:
If you have a project file, then it should be under the References node in the Solution Explorer.


Snapshot.png
0
digital_soulAuthor Commented:
Hi

There is a reference to System.Data.Linq Under Project - Properties - references. See attached screengrab

Cheers



screengrab.png
0
Bob LearnedCommented:
I would look again, in the file folder where your code is, and see if you have a .vbproj file.  It looks like you have a Web Site model (File | New Web Site), instead of a Web Application model (File | New | VB.NET | Web | Web Application).  I asked that question before because there are differences between how the two models behave with ASP.NET.

I see that you are referencing System.Data.Linq v. 3.5, but it is not coming from the Global Assembly Cache (GAC).  I have ASP.NET 4.0, and you can see the difference between the references in this image:


Snapshot.png
0
digital_soulAuthor Commented:
Its an ASP.NET Web Application created via File - New project as its part of a multi-project solution. There is a vbproj file.
0
Bob LearnedCommented:
VB.NET projects are different than C# projects.  With C# projects, you will see a References node in the Solution Explorer tree.  If you have the correct reference, and the correct Imports System.Data.Linq statements, then you have a system that is getting confused.  When ASP.NET compiles a web page, it includes all the referenced DLLs in the \bin folder.  I can't think of a specific reason for this, off the top of my head.
0
digital_soulAuthor Commented:
I appear to have solved it. For some reaosn Visual Studio wasn't adding

<add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

to the Web.config file. Ive assed this reference now and the page compiles fine. Thanks for your help though.
0
digital_soulAuthor Commented:
Actually the problem is only partially solved. I can now set up a LInqDataSource and bind it to a datagrid and compile this ok. I cant seem to access my DataContext Class programtically though. Is there a difference between how you would access this class in a Project as opposed to a website? usually in a website id just create the Linq to SQL class using the designer and instantly be able to reference it in code ala:

Dim myDataContext As LinqClassDataContext = New LinqClassDataContext ()

In my Project file though Visuaol Studio is not recognising my DataContext Class, despite the file having been automatically generated as usual.
0
digital_soulAuthor Commented:
It seemed to be because I was placing my DataContext classes in an App_Code folder which is presumbaly not a recognised Project directory as it isnt an option from Add ASP.NET Folder. As soon as I created the class in the root I was able to access it from code.

Is there a reason why the App_Code folder wouldnt work in a project as it does in  a website?

Cheers
0
Bob LearnedCommented:
You said that you were working with a Web Application model web site, and the App_Code, App_Data folders are a construct for Web Site model web sites, so that it can find the code and data modules.
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
ASP.NET

From novice to tech pro — start learning today.