Linq to SQL intellisense不了解datacontext对象中的表

时间:2010-10-31 03:29:36

标签: sql linq linq-to-sql datacontext

我可以使用我的datacontext对象成功连接到数据库。我能够成功读取和写入数据库,但是我不能使用其他人似乎使用的相同语法。

例如,当我想要表格中的数据时,我必须做这样的事情:

db = new UserDataDataContext(WebConfigurationManager.ConnectionStrings["UserData"].ConnectionString);
IQueryable Users = db.GetTable<User>();

我希望能够编写linq查询,就像我看到其他人一样:

db = new UserDataDataContext(WebConfigurationManager.ConnectionStrings["UserData"].ConnectionString);
var query = from u in db.User
            where u.UserName == "Test"
            select u;

但是intellisense不会将User识别为db的属性,因此不会编译。 Intellisense不会显示任何与我的数据库的表或实体相关的属性。

以下是我收到的错误消息:

'System.Data.Linq.DataContext' does not contain a definition for 'User' and no extension method 'User' accepting a first argument of type 'System.Data.Linq.DataContext' could be found (are you missing a using directive or an assembly reference?)

以下是我正在做的事情的简要说明:

我使用了数据库设计器,拖动了我想要的表格。

然后我将其保存为dbml文件。

然后它创建了一个为我扩展dataContext的新类,名为UserDataDataContext。然后我实例化一个名为db的UserDataDataContext的新实例,从Web.config传入我的连接字符串。

然后我尝试编写一个linq查询,引用表名作为db对象的属性,但它不识别它们。

与我读过的所有例子相比,我似乎无法找到我做错的事情。有什么想法吗?

1 个答案:

答案 0 :(得分:4)

我确定你在某处有以下变量声明:

// variable is of type System.Data.Linq.DataContext
DataContext db;

将其更改为:

// variable is now of the appropriate subclass's type
UserDataDataContext db;

如果db是一个局部变量,你可以一起内联初始化和声明,那么使用隐式类型会更好:

// db is implicitly of type UserDataDataContext
var db = new UserDataDataContext(WebConfigurationManager.ConnectionStrings["UserData"].ConnectionString);

C#是安全静态类型语言。虽然您的引用引用的对象确实在运行时具有您期望的属性,但编译器不会让这个编译,因为上不存在这些属性变量的类型。