用了两种orm,详细地址。
linq to sql http://kb.cnblogs.com/page/70851/
ef 的比较困难。揣摩了很多例程才揣摩出来。
对于一个以前写习惯ado.net的我来说,orm这种东西简直就是不劳而获。再一次体现了微软的宗旨:快速开发。把一切都封装,一切都弄好给你了。他就越来越牛,你就越来越白痴。
几个我应该需要记住的一些经验。
1、由于是昨天下午弄的了。很多该记住的没及时记住,先把代码上了。以后不懂回来看代码。
View Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using myarticle;
using System.Data.Linq;
namespace getmyarticle
{
class Program
{
private static DataarticleDataContext dataarticle = new DataarticleDataContext();
private static void show()
{
//常规foreach方法
foreach (column com in dataarticle.columns)
{
Console.WriteLine("属于栏目是:" + com.columnname);
foreach (article art in com.articles)
{
Console.WriteLine("题目是:" + art.title);
Console.WriteLine("内容是:" + art.content);
}
}
//具有lambda表达式的方法
foreach (column com in dataarticle.columns)
{
Console.WriteLine("属于的栏目是:" + com.columnname);
column mycolumn = dataarticle.columns.Single(c => c.columnname == "新闻");
foreach (article art in mycolumn.articles)
{
Console.WriteLine("题目是:" + art.title);
Console.WriteLine("内容是:" + art.content);
}
////////////////////////////////////////////
Console.WriteLine("属于的栏目是:" + com.columnname);
//List<article> artlist = dataarticle.articles.Select(c => c.columnid == com.id).ToList() ;
var artlist = from p in dataarticle.articles.ToList() where p.columnid == com.id select p;
foreach (article art in artlist)
{
Console.WriteLine("题目是:" + art.title);
Console.WriteLine("内容是:" + art.content);
}
}
Console.ReadLine();
}
private static void add()
{
column column1 = new column()
{
columnname ="新闻"
};
article ar = new article()
{
title ="我市召开**会",content ="我市在哪里什么时候召开了什么会议"
};
column1.articles.Add(ar);
dataarticle.columns.InsertOnSubmit(column1 );
dataarticle.SubmitChanges();
}
static void Main(string[] args)
{
//add();
show();
}
}
}
2、ef的使用。
1)和之前接触的ef4.0 不同,这个不是自动建库。
2)4.0有个 find()函数,以下的用的是singel函数。
3)wayman说submit返回的是表单,其实就是一个类,说用到反射。表单和类会进行匹配。而controller的参数必须在表单上面有名。
4)跳转那里,注意含有id的时候,他自动隐藏,所以要退一步。而现在一般用的是 RedirectToAction();
5)TryUpdateModel 做多一次报错匹配,效率慢,但是安全性高。
6)公司都重写了add del update等函数。
7)我需要理解的流程:拿出来->更新或者删除->保存修改。
8)今天知道orm 关系对象映射
View Code
namespace myarticlebyEF.Controllers
{
public class articleController : Controller
{
articleEntities articleE = new articleEntities();
/// <summary>
/// 列表
/// </summary>
/// <returns></returns>
public ActionResult Index()
{
var atriclelist = from a in articleE.article select a;
return View(atriclelist);
}
/// <summary>
/// 增加文章
/// </summary>
/// <returns></returns>
public ActionResult create()
{
return View();
}
[HttpPost]
public ActionResult create(article article1)
{
if (ModelState.IsValid)
{
articleE.AddObject("article", article1);
articleE.SaveChanges();
return RedirectToAction("Index");
}
else
{
return View(article1);
}
}
/// <summary>
/// 修改文章
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public ActionResult edit(int id)
{
return View(articleE.article.Single(a => a.id == id));
}
[HttpPost]
public ActionResult edit(int id ,FormCollection frm)
{
article art = articleE.article.Single(a => a.id == id);
TryUpdateModel(art, frm);
articleE.SaveChanges();
//return RedirectToAction("Index");
return Redirect("../Index");
}
public ActionResult Delete(int id)
{
var art = articleE.article.Single(a => a.id == id);
articleE.DeleteObject(art);
articleE.SaveChanges();
return RedirectToAction("Index");
}
}
}
今天用的都是常规的submit,明天要试试用jq。
加油。每天都进步一小点!


浙公网安备 33010602011771号