一步一步学EF系列1【最简单的一个实例】
一步一步学EF系列一【最简单的一个实例】
整个文章我都会用最简单,最容易让人理解的方式给大家分享和共同学习。(由于live Writer不靠谱 又得补发一篇)
一、安装
Install-Package EntityFramework
二、简单例子演示
/// <summary> /// 博客用户及随笔类 /// </summary> public class BlogUser { /// <summary> /// 默认情况下属性被命名为ID、id或者[ClassName]Id,将映射为数据表中的主键 /// 如果没有类似的命名,并且也未显示指明主键,则生成失败,引发异常 /// </summary> public int BlogUserId { get; set; } public string BlogName { get; set; } /// <summary> /// 定义博客用户的随笔列表 /// virtual表示该列表为延迟加载 /// </summary> public virtual ICollection<Post> Posts { get; set; } } public partial class Post { /// <summary> /// 随笔的主键id /// </summary> public int PostId { get; set; } // 随笔的标题 public string PostTitle { get; set; } /// <summary> /// 操作人 /// </summary> public int BlogUserId { get; set; } /// <summary> /// 延迟加载博客用户 /// </summary> public virtual BlogUser BlogUser { get; set; } }
定义了两个实体,功能很简单,记录每个用户的随笔。 BlogUser 博客用户表 Post 随笔表
三、创建DbContext
public class BlogDbContext : DbContext, IDisposable { public BlogDbContext() : base() { } //实体集合 public IDbSet<BlogUser> BlogUsers { get; set; } public IDbSet<Post> Posts { get; set; } }
也很简单,就把两个实体加入进来
以上三步最初级的功能就完成了。
四、演示
public ActionResult Index() { var db= new BlogDbContext(); //向数据库添加记录 var blogUser = new BlogUser() { BlogUserId = 1, BlogName = "STONE" }; db.BlogUsers.Add(blogUser); var post = new Post() { PostId = 1, PostTitle = "代码改变世界", BlogUserId = 1 }; db.Posts.Add(post); //保存记录,返回受影响的行数 int recordsAffected = db.SaveChanges(); return View(db.Posts.ToList()); }
db.BlogUsers.Add(mode); 就是增加一条博客账号信息。然后把信息显示出来
页面的代码
<table border="1"> <tr> <td> 发布人姓名 </td> <td> 随笔标题 </td> </tr> @foreach (var item in Model) { <tr> <td>@item.BlogUser.BlogName</td> <td>@item.PostTitle</td> </tr> } </table>
前端运行后的效果
在查看数据库,已经自动创建了两张表
在看看主外键关系也已经创建好了。
以上都是最最基础的东西,自己先动手做一次,至于里面的所有细节,后面的将继续讲解
第一次发布这个格式还不太会调整
以最简单的方式让大家学会EF
- 4楼枫伶忆
- 这个应该是codefirst我已经敲了一遍,成功了,感谢楼主
- 3楼Banianer
- 支持分享,如果做教程的话,建议从0开始建立项目一步步讲解,效果可能会更好些。
- Re: liu.peng
- @Banianer,后面的篇章准备按照细的来。谢谢支持
- 2楼枫伶忆
- 你这个是model first,还是code first数据库是怎么创建的,,给你个建议,你这排版要整理下,类容代码尽量多一点,不然博客园那个会说你这文章不够知识分享,移除首页,移除首页就没什么人看到了
- Re: liu.peng
- @枫伶忆,还真被你说中了,看来后面的文章多内容多点了
- 1楼—阿辉
- 希望楼主写的详细点,,持续学习中。, 加油
- Re: liu.peng
- @—阿辉,会的 谢谢支持