tytang

于是我就走上了我.net的这条路。

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

用了两种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。

加油。每天都进步一小点!

posted on 2011-07-14 18:14  tytang  阅读(399)  评论(0)    收藏  举报