在java平台上,ORM这一块Hiberante是相当的.但是在谈到.NET平台.ORM框架就有些不一样了.Nhibernate,Nbeat和Castel,以及我要说的linQ to Sql。
Tosql是微软自己的产品。现在用的或许很少了,但是如果做一个中小型的项目,开发和部署还是很好的,不必考虑第
三方库。但是Tosql毕竟是直接面对数据库的。这个操作我有些用不惯,这里就简单介绍了。
要想使用Linq to Sql,实现需要建立好数据库。
Step1 建立LINQ to SQL Classes文件
在实体层中选择添加新项 LinQ to SQL类,并命名。
Setp2建立数据库连接生产代码
VS视图中打开是服务资源管理,添加connection连接。填写服务器名称与数据库名称。我这里是本地就用window
验证了
打开刚才创建的 LinQ toSql文件。将数据中的表托动态文件上
保存后ORM映射就完成了,这里没有XML文件,所以相对NH简单,但是也存在隐患。修改就难了。
Step3操作数据
这里我就以控制台操作了。 做3个实例,分别对应到添加单条数据,删除集合,以及查询
添加
public static void Add() { //声明实体 Commodity commidity = new Commodity { Code=Guid.NewGuid().ToString(), CommodityName="月饼", CommodityPrice=500, CommodityType="2" }; Console.WriteLine("=----begin add commidity"); using(DataClasses1DataContext bd= new DataClasses1DataContext()) { bd.Log=Console.Out;//控制台输出 bd.Commodity.InsertOnSubmit(commidity);//调用tosql的方法 bd.SubmitChanges();////事务机制被封装到SubmitChanges方法内 Console.WriteLine("----end add commidity"); }
新东西到没有什么
删除(集合)
public static void Delete() { Console.WriteLine("-----------begin delete all commidity"); using (DataClasses1DataContext bd = new DataClasses1DataContext()) { bd.Log = Console.Out; bd.Commodity.DeleteAllOnSubmit(bd.Commodity.Where(p => p.CommodityName == "月饼"));//删除为查询到的集合实体集, bd.SubmitChanges(); } Console.WriteLine("------------end Delete commidity"); }
我们看打印的sql语句是以and的形式连接的
查询
再看最重要的查询,说到查询,就得和LinQ to Object联系起来了,这里的查询如出一辙,写法也是相同的。
public static List<Commodity> select() { //务必先实例化数据集db DataClasses1DataContext db= new DataClasses1DataContext(); //集合形式 List<Commodity> commiditys = db.Commodity.ToList(); //条件形式 List<Commodity> commdityWhere=db.Commodity.Where(p => p.CommodityName == "水").ToList(); //查询与选择 var commodityWhereSel = db.Commodity.Distinct().Where(p =>p.CommodityName == "月饼").Select(a => a.CommodityPrice); //选择 List<string> commidityName=db.Commodity.Select(p => p.CommodityName).ToList(); return commdityWhere; }
操作与 To Object是一样的,细心的你是否发现 只不多这里不再是传递集合数据了呢,而是db.表名称。
总结
以上是LinQ to Sql基本的操作,只在查询中添加了简单的条件限制,我认为是操作中常用的,当然了还有排序等。虽然本人并不善用to Sql,还是希望对入门的同学们有所启发。