C# 3.0, Linq, Linq To Sql
版权声明:本Blog内的所有文章如非特别注明,版权均归作者个人所有,任何外部引用或摘抄请注明原文地址,未经作者授权不得用于任何以营利目的的行为,谢谢合作! Name: Tom Song MSN: sguoan@hotmail.com
从本节开始,笔者将会和大家一起开始体验dlinq了。前面我们准备了数据库,也对数据库之间的关系做了初步的了解。有了数据库之后,数据和对象是一个什么样的关系呢?从dlinq的设计来看,它主要是为了解决data!=objects 的问题而产生的。那么,现在,有了dlinq后数据和对象之间就可以有一个一一对应的关系了。我们既可以根据数据库生成这种影射的代码,也可以根据影射代码生成数据库。简单的说,数据库和影射代码实现了相互转化。linq preview提供了一个很好的工具,可以帮我们实现从数据库到代码的影射。它就是sqlmetal。beta2的sqlmetal在C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin目录下,或C:\WINDOWS\Microsoft.NET\Framework\v3.5目录打开cmd,运行sqlmetal程序。会出现下面的提示。运行如下的命令。 sqlmetal /server:myserver /database:northwind /namespace:nwind /code:nwind.cs/language:csharp你可以根据northwind数据库生成一个nwind.cs文件。你会在 linq priview的bin目录发现它^_^ 。这里的参数的含义也非常的明确,笔者也不在多赘述。在这里,我想和大家简要介绍下这个影射文件nwind.cs.因为这个是程序自动生成的,我们暂时最好不要改,在后面的进阶中,我将为大家详细阐述此文件中code的含义,以及实现inheritance.我们先来看Northwind 类的定义。 public partial class Northwind : DataContext {....首先partial关键词是C#2.0中出现的,本文不是讲解C#2.0的,相关知识请参阅相关文献。Northwind 的名字是根据你数据库的名字定义的.我们发现,它必须从DataContext 类继承,才可以获得dlinq的支持。再往下看 public Table<Order> Orders;
public Table<Product> Products;
public Table<OrderDetail> OrderDetails;Table类是dlinq中定义的,这里他用了一个范性的概念,类似于C++中的模板。但C#和C++还是有区别,C++的泛型模板类似替换,只是编译时用实际类型进行替换,因此对任何类型都可以,但是C#的泛型是在虚拟机级别上的实现,因此在编译时会进行类型检查(引)。Order, Product和OrderDetail等,都是sqlmetal程序根据数据库里对应的表,自动产生的类。也就是class和table是一一对应的。而这样也恰恰实现了object和data的对等。让我们去看看Order的定义吧。我这里只贴出部分。 只简单介绍几个点,更加详细内容我会在进介阶段解释,包括inheritance。
昵称: [登录] [注册]
主页:
邮箱:(仅博主可见)
验证码: 看不清,换一个
评论内容:
登录 注册
[使用Ctrl+Enter键快速提交评论]
Powered by: 博客园 Copyright © Tom Song