Solved

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

Posted on 2010-08-13
15
720 Views
Last Modified: 2012-05-10
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
0
Comment
Question by:digital_soul
  • 8
  • 7
15 Comments
 
LVL 96

Expert Comment

by:Bob Learned
ID: 33436463
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
 
LVL 2

Author Comment

by:digital_soul
ID: 33436517
The auto genarated Class file where the error is occuring does include

Imports System.Data.Linq
Imports System.Data.Linq.Mapping
0
 
LVL 96

Expert Comment

by:Bob Learned
ID: 33436870
That is an Imports statement, but you also need a reference in your project to the System.Data.Linq assembly.
0
 
LVL 2

Author Comment

by:digital_soul
ID: 33437127
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
 
LVL 96

Expert Comment

by:Bob Learned
ID: 33438355
Are you working with a web application or web site (project file or not)?
0
 
LVL 2

Author Comment

by:digital_soul
ID: 33438433
Yes its a Project file
0
 
LVL 96

Expert Comment

by:Bob Learned
ID: 33438466
If you have a project file, then it should be under the References node in the Solution Explorer.


Snapshot.png
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 2

Author Comment

by:digital_soul
ID: 33439574
Hi

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

Cheers



screengrab.png
0
 
LVL 96

Expert Comment

by:Bob Learned
ID: 33440351
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
 
LVL 2

Author Comment

by:digital_soul
ID: 33440651
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
 
LVL 96

Expert Comment

by:Bob Learned
ID: 33442092
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
 
LVL 2

Author Comment

by:digital_soul
ID: 33444075
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
 
LVL 2

Author Comment

by:digital_soul
ID: 33444227
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
 
LVL 2

Author Comment

by:digital_soul
ID: 33444299
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
 
LVL 96

Accepted Solution

by:
Bob Learned earned 500 total points
ID: 33444790
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

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In this Article, I will provide a few tips in problem and solution manner. Opening an ASPX page in Visual studio 2003 is very slow. To make it fast, please do follow below steps:   Open the Solution/Project. Right click the ASPX file to b…
User art_snob (http://www.experts-exchange.com/M_6114203.html) encountered strange behavior of Android Web browser on his Mobile Web site. It took a while to find the true cause. It happens so, that the Android Web browser (at least up to OS ver. 2.…
Along with being a a promotional video for my three-day Annielytics Dashboard Seminor, this Micro Tutorial is an intro to Google Analytics API data.
In this video I am going to show you how to back up and restore Office 365 mailboxes using CodeTwo Backup for Office 365. Learn more about the tool used in this video here: http://www.codetwo.com/backup-for-office-365/ (http://www.codetwo.com/ba…

863 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

19 Experts available now in Live!

Get 1:1 Help Now