[英]LinqToSql: How do you read data when you don't know the DB Table yet?
我过去一直在使用linq,并且知道如何使用SqlConnection和SqlCommand访问数据库。 今天,我想与LinqToSql合作 ,看看是否以及如何使从数据库的读取和写入变得更加容易。 我完成了本演练。
这是客户类的代码(我做了一些修改,但仍然可以正常工作):
[Table(Name = "Customers")]
class Customer
{
[Column(IsPrimaryKey = true)]
public string CustomerID { get; set; }
[Column]
public string City { get; set; }
}
以及来自Main的代码:
class Program
{
static void Main(string[] args)
{
DataContext db = new DataContext(@"Data Source=(local)\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa;Password=xxx");
Table<Customer> customers = db.GetTable<Customer>();
IQueryable query = from cust in customers
//where cust.City == "London"
select cust;
foreach (Customer customer in query)
Console.WriteLine("ID:{0}; City={1}", customer.CustomerID, customer.City);
Console.ReadKey();
}
}
它工作正常,我很高兴,因为这使我访问数据库变得非常容易。 但是,还有几件事让我感到担忧:
首先,这似乎是很多不必要和重复的工作。 我在这里做错什么了吗?
另外,我希望用户输入数据库和表的名称。 这意味着我还不知道他将选择哪个数据库,我也不知道表的结构。 我还不能创建应该代表表的类。
这意味着我将需要:
Table<Customer> customers = db.GetTable<Customer>()
因为我还不知道类型。 类型将是动态创建的类。 [Table(Name="xxx")]
将类型/类/对象标记为表。 Table<T> table = db.GetTable<T>()
获得表,执行查询并显示数据行。 我的第二个(也是更重要的)问题是:我该怎么做? 有没有人可以分享代码示例或链接? 还是这种方法是错误的?
您可以像这样将结果存储在动态对象中。
dynamic table = db.GetTable<T>()
并使用反射来获取对象的类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.