LINQ下使用三层架构的探索(三)建立一个LTS层,并在表示层中插入数据
按部就班的做
1在上一章的基础上,我们添加一个新的WEB窗体。
2添加一个BUTTON按钮,双击它。
3 在事件中添加如下代码:
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语句或者改变了对象化的数据,都并不是真正地直接操纵数据库。相反的,我们全部是在对对象进行操作,更加有利并且容易地去定制我们所需要的业务规则。
之后的章节中,我们即将把所有的操作方法放入这个新的业务逻辑层——我称它为逻辑访问层。相信这样的分层会使得网站的结构更加地清晰。
祝,编程愉快!