LINQ下使用三层架构的探索(三)建立一个LTS层,并在表示层中插入数据

 上一章讲了在表示层中查询数据的方法,现在我们要说说插入数据的操作。不过大家注意,我们现在仅仅用了二层的架构,目的是让大家能够直观的看到LINQ的工作原理,在接下来的章节里,我们将会把这些方法都写入中间层去。

按部就班的做

1在上一章的基础上,我们添加一个新的WEB窗体。

2添加一个BUTTON按钮,双击它。

3 在事件中添加如下代码:

NorthwindDataContext db = new NorthwindDataContext();
Product nproduct 
= new Product();
        nproduct.ProductName 
= "Sunli'Tea";
        nproduct.SupplierID 
= 1;
        nproduct.CategoryID 
= 1;
        nproduct.QuantityPerUnit 
= "cup";
        nproduct.UnitPrice 
= 10m;
        nproduct.UnitsInStock 
= 1;
        nproduct.UnitsOnOrder 
= 1;
        nproduct.ReorderLevel 
= 1;
        nproduct.Discontinued 
= false;
        db.Products.InsertOnSubmit(nproduct);
        db.SubmitChanges();

 

4简单地解释一下代码:

1)         我们创建了一个DataContext实例 db

2)         创建了一个Product的实例 nproduct(映射到Product表的一行)

3)         nproduct的属性依次赋值

4)         确认一个对db.Products的插入操作,插入记录为nproduct

5)         通过SubmitChanges()方法将对象中改变的数据存入数据库

5运行该页面,单击按钮,然后转到Default1.aspx去查看刚才插入的数据。

它是如何工作的?

和前一个练习一样,我们在表示层中使用了操作对象的方法,不过并没有使用到LINQ查询。我们所做的是,创建一个Product对象实例,通过改变对象属性,创建了一条新记录,该记录保存在内存中,并且添加到内存中的表中。再通过SubmintChange()方法将内存中改变了的表数据插入数据库中。如果不使用该方法,数据库实际并不会被改变,不过我们在db实例中却可以找到新增的数据。

小结:

到现在为止,我们一共编写了2个方法(如果你尝试了上一章末尾的两个方法的话一共是4个),这些方法都是在表示层中。但是他们并不是实际的数据库操作语句,有的甚至都不是LINQ的语句。这是因为我们的操作都是在对对象进行的,尤其是在插入数据的时候,我们发现对于这些对象化的数据的操作,在没有确认改变之前,他们都仅仅是在内存中有变化。

正因如此,我们的新的三层架构即将诞生并且与以前的观点并没有冲突,即使我在业务逻辑层中使用了LINQ语句或者改变了对象化的数据,都并不是真正地直接操纵数据库。相反的,我们全部是在对对象进行操作,更加有利并且容易地去定制我们所需要的业务规则。

之后的章节中,我们即将把所有的操作方法放入这个新的业务逻辑层——我称它为逻辑访问层。相信这样的分层会使得网站的结构更加地清晰。

祝,编程愉快!

posted @ 2008-04-03 08:04  NafLian  阅读(4981)  评论(12编辑  收藏  举报