我使用Linq创建一个表
PODataContext db = new PODataContext();
String query = "create table myTable(text varchar(20) primary key)";
db.ExecuteCommand(query);
然后我也将数据插入其中。
String insQuery = "insert into myTable values('some text')";
db.ExecuteCommand(insQuery);
我的问题是如何从该表中获取数据?
谢谢 YOHAN
答案 0 :(得分:1)
var query =from c in new PODataContext().myTable
select c;
<强>已更新强>
不使用对象关系设计器的LINQ to SQL
创建一个名为MyTable的类,并使用Table属性进行装饰。
[Table(Name="myTable")]
public class MyTable
{
[Column]
public string Text
}
然后创建以下类
public class PODataContext : DataContext
{
public Table<MyTable> myTables;
public PODataContext(string connection): base(connection)
{
}
}
现在按如下方式查询您的表
var query =from c in new PODataContext().myTable
select c;
答案 1 :(得分:1)
要对数据库表进行查询,您不需要编写字符串命令并调用ExecuteQuery
方法 - 它仅适用于您无法使用LINQ执行的特定数据库任务。你可以用LINQ做的是写查询,如:
var query = from c in db.myTable
where c.Id > 5
select c;
foreach ( var c in query )
Console.WriteLine( c );
此代码从myTable中获取Id大于5(SELECT * FROM myTable WHERE Id > 5 in SQL
)的所有实体,并将它们全部写入控制台。
但要使其工作,您需要为您的数据库创建正确的DataContext
。在Visual Studio中执行此操作的最简单方法是Add New Item...
- &gt; LINQ to SQL Classes
。然后,您需要在Server Explorer
中连接到您的数据库,展开Tables
并将所需的表拖到设计器窗口。 Visual Studio自动生成从DataContext
派生的新类,该类对您的数据库很有用(例如,具有myTable
等属性。)
答案 2 :(得分:1)
如果要在运行时更改(或创建!)数据库模式,请注意LinqToSQL也不能在运行时更新它的数据库表示。它只能通过Visual Studio中的Drag-And-Drop或通过命令行使用SQLMetal(一种相当模糊的方法)并重新编译应用程序来更新。
但是,您可以在运行时使用ExecuteQuery创建定义良好的数据库模式,并在开发计算机上使用相同的现有数据库模式,通过拖放生成LinqToSQL DataContext。