- 浏览: 1067991 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (639)
- 服务器配置篇 (58)
- hibernate篇 (14)
- spring篇 (33)
- struts篇 (28)
- JS篇 (46)
- 其他技术篇 (46)
- 数据库集群配置 (6)
- JAVA基础相关 (48)
- 分布式框架HadHoop的应用 (2)
- FLEX篇 (8)
- SQLSERVER技术 (32)
- Android学习 (13)
- amchart学习笔记 (1)
- openfire+smark搭建即时通讯 (9)
- Linux学习 (18)
- Oracle数据库 (15)
- 网站优化技术 (12)
- mysql数据库 (2)
- 项目学习总结 (18)
- 工具类(JAVA) (12)
- 工具类(JS) (2)
- 设计模式 (10)
- Lucene学习 (24)
- EJB3学习 (6)
- Sphinx搜索引擎 (3)
- 工作中用到的软件小工具 (5)
- .NET (49)
- JAVA 连接SQLSERVER2008步骤 (1)
- MongoDB (19)
- Android手机开发 (3)
- Maven (6)
- vue (9)
- Shiro (4)
- mybatis (3)
- netty框架 (1)
- SpringCloud (3)
- spring-cloud (7)
- Git (1)
- dubbo (2)
- springboot (13)
- rocketmq (1)
- git学习 (2)
- kafka服务器 (2)
- linux (10)
- WEB系统辅助项目 (1)
- jenkins (2)
- docker (4)
- influxdb (3)
- python (2)
- nginx (1)
最新评论
-
jiangfuofu555:
这样数据量大,效率怎么样?
sqlserver 实现分页的前台代码 以及后台的sqlserver语句 -
w156445045:
博主请问下,如何做到实时的刷新呢,
另外我后台是Java 谢谢 ...
web 版本的汽车仪表盘,非常好看。还有各种图形 -
jackyin5918:
<transportConnector name=&qu ...
ActiveMQ的activemq.xml详细配置讲解 -
握着橄榄枝的人:
你这个不是spring1.x的吧
spring1.x使用AOP实例 -
xiaophai:
全乱套了!
openfire+spark搭建完美的及时通讯
The Contoso University Web Application
The application you'll be building in these tutorials is a simple university website.
Users can view and update student, course, and instructor information. A few of the screens you'll create are shown below.
本文中我们介绍codefirst开发模式
首先创建一个MVC应用:
创建完成以后,系统会自动创建一个模板页:
<!DOCTYPE html>
<html>
<head>
<title>@ViewBag.Title</title>
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
</head>
<body>
<div class="page">
<div id="header">
<div id="title"> <h1>Contoso University</h1>
</div>
<div id="logindisplay">
@Html.Partial("_LogOnPartial")
</div>
<div id="menucontainer">
<ul id="menu">
<li>@Html.ActionLink("Home", "Index", "Home")</li>
<li>@Html.ActionLink("About", "About", "Home")</li>
<li>@Html.ActionLink("Students", "Index", "Student")</li>
<li>@Html.ActionLink("Courses", "Index", "Course")</li>
<li>@Html.ActionLink("Instructors", "Index", "Instructor")</li>
<li>@Html.ActionLink("Departments", "Index", "Department")</li>
</ul>
</div>
</div>
<div id="main">
@RenderBody()
</div>
<div id="footer">
</div>
</div>
</body>
</html>
创建数据MODEL:
using System;
using System.Collections.Generic;
namespace ContosoUniversity.Models
{
public class Student
{
public int StudentID { get; set; }
public string LastName { get; set; }
public string FirstMidName { get; set; }
public DateTime EnrollmentDate { get; set; }
public virtual ICollection<Enrollment> Enrollments { get; set; }
}
}
using System;
using System.Collections.Generic;
namespace ContosoUniversity.Models
{
public class Enrollment
{
public int EnrollmentID { get; set; }
public int CourseID { get; set; }
public int StudentID { get; set; }
public decimal? Grade { get; set; }
public virtual Course Course { get; set; }
public virtual Student Student { get; set; }
}
}
using System;
using System.Collections.Generic;
namespace ContosoUniversity.Models
{
public class Course
{
public int CourseID { get; set; }
public string Title { get; set; }
public int Credits { get; set; }
public virtual ICollection<Enrollment> Enrollments { get; set; }
}
}
他们的关系是,一个学生可以有多个登记:
public virtual ICollection<Enrollment> Enrollments { get; set; }
一门课程也有多个登记:
public virtual ICollection<Enrollment> Enrollments { get; set; }
而一个登记对应一门课程和一个学生。
建立完这三个实体类以后,就要创建数据库的CONTEXT:
在entityframe work中我们使用的是System.Data.Entity.DbContext class,在你的代码中要包含这个数据实体。代码如下:
using System;
using System.Collections.Generic;
using System.Data.Entity;
using ContosoUniversity.Models;
using System.Data.Entity.ModelConfiguration.Conventions;
namespace ContosoUniversity.Models
{
public class SchoolContext : DbContext
{
public DbSet<Student> Students { get; set; }
public DbSet<Enrollment> Enrollments { get; set; }
public DbSet<Course> Courses { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}
}
代码中为每个实体都创建了一个DbSet的属性,在entity framework中,一个entityset 关联了一个数据库表,一个entity关系了一张表的一行数据。
OnModelCreating方法,表示当模型创建以后我们要做的动作,
在代码中表示组织数据库自动创建的表名为复数。如果你不这么做,那么产生的数据库表名为:
Students,Course,Enrollments.
然后在你的工程文件的web.config中配置数据库连接字段:
<add name="SchoolContext" connectionString="Data Source=|DataDirectory|School.sdf" providerName="System.Data.SqlServerCe.4.0"/>
你不一定要创建连接字符串,如果你不创建,entityframework会自动在sqlserver express数据库中帮你创建。
注意我们配置的web.config 是工程目录下的。而不是在views目录下的。
在连接字符创中的name值,系统默认会去寻找和object context class名字相同的字符串。
初始化数据:
entity frame work能够自动创建数据库并初始化一些测试数据在你的应用中。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
using ContosoUniversity.Models;
namespace ContosoUniversity.DAL
{
public class SchoolInitializer : DropCreateDatabaseIfModelChanges<SchoolContext>
{
protected override void Seed(SchoolContext context)
{
var students = new List<Student>
{
new Student { FirstMidName = "Carson", LastName = "Alexander", EnrollmentDate = DateTime.Parse("2005-09-01") },
new Student { FirstMidName = "Meredith", LastName = "Alonso", EnrollmentDate = DateTime.Parse("2002-09-01") },
new Student { FirstMidName = "Arturo", LastName = "Anand", EnrollmentDate = DateTime.Parse("2003-09-01") },
new Student { FirstMidName = "Gytis", LastName = "Barzdukas", EnrollmentDate = DateTime.Parse("2002-09-01") },
new Student { FirstMidName = "Yan", LastName = "Li", EnrollmentDate = DateTime.Parse("2002-09-01") },
new Student { FirstMidName = "Peggy", LastName = "Justice", EnrollmentDate = DateTime.Parse("2001-09-01") },
new Student { FirstMidName = "Laura", LastName = "Norman", EnrollmentDate = DateTime.Parse("2003-09-01") },
new Student { FirstMidName = "Nino", LastName = "Olivetto", EnrollmentDate = DateTime.Parse("2005-09-01") }
};
students.ForEach(s => context.Students.Add(s));
context.SaveChanges();
var courses = new List<Course>
{
new Course { Title = "Chemistry", Credits = 3, },
new Course { Title = "Microeconomics", Credits = 3, },
new Course { Title = "Macroeconomics", Credits = 3, },
new Course { Title = "Calculus", Credits = 4, },
new Course { Title = "Trigonometry", Credits = 4, },
new Course { Title = "Composition", Credits = 3, },
new Course { Title = "Literature", Credits = 4, }
};
courses.ForEach(s => context.Courses.Add(s));
context.SaveChanges();
var enrollments = new List<Enrollment>
{
new Enrollment { StudentID = 1, CourseID = 1, Grade = 1 },
new Enrollment { StudentID = 1, CourseID = 2, Grade = 3 },
new Enrollment { StudentID = 1, CourseID = 3, Grade = 1 },
new Enrollment { StudentID = 2, CourseID = 4, Grade = 2 },
new Enrollment { StudentID = 2, CourseID = 5, Grade = 4 },
new Enrollment { StudentID = 2, CourseID = 6, Grade = 4 },
new Enrollment { StudentID = 3, CourseID = 1 },
new Enrollment { StudentID = 4, CourseID = 1, },
new Enrollment { StudentID = 4, CourseID = 2, Grade = 4 },
new Enrollment { StudentID = 5, CourseID = 3, Grade = 3 },
new Enrollment { StudentID = 6, CourseID = 4 },
new Enrollment { StudentID = 7, CourseID = 5, Grade = 2 },
};
enrollments.ForEach(s => context.Enrollments.Add(s));
context.SaveChanges();
}
}
}
seed方法中,代码在这个方法中用OBJECT创建一个新的实体到数据库中,对于每一个实体类型,代码都创建一个集合,添加他们到DBSET属性中。然后保存转变到数据库中。
然后在global.asax.cs中添加如下代码:
在application_start方法中添加:
Database.SetInitializer<SchoolContext>(new SchoolInitializer());
笔记,当你实际开发部署应用的时候,要将这段代码去掉。切记。因为一旦系统欲行了该段代码,系统每次检测到模型层变化。都会重新创建数据库,然后初始化原始的测试数据。
发表评论
-
C# WinForm程序如何与js交互
2012-07-15 22:28 2318一、建立网页 <html ... -
SQLITE FOR .NET4.0使用说明以及DLL
2012-06-28 22:07 1203SQLITE FOR .NET4.0使用说明以及DLL -
WinForm中TabControl的一些事件写法(C#)
2012-06-27 20:41 9877在TabControl控件中并没提供单个选项卡的Click事件 ... -
C# 通过字符串动态创建一个窗体
2012-06-27 20:27 1745private void button1_Click(obje ... -
vs2010 打包winform成EXE文件
2012-04-20 14:03 1645见附件 -
C#中DataGridView控件60招
2012-01-13 09:36 65571. DataGridView当前的单元格属性取得、变更 2 ... -
单击dataGridView某一行时将dataGridView当前选择行的某列值赋值给某个文本框
2012-01-13 09:19 2459SelectedRows和CurrentRow之间的区别 ... -
c# winform开发-datagridview开发
2012-01-13 09:18 1727datagridview 操作详解 目录: 1、 取得或 ... -
C# 中奇妙的函数. String Split 和 Join
2011-10-25 10:51 1110很多时候处理字符串数据,比如从文件中读取或者存入 - 我们可能 ... -
asp.net中web.config配置节点大全详解
2011-10-25 10:16 1373asp.net中web.config配置节点大全详解 2 ... -
Entity Framework in ASP.NET MVC Application (三)
2011-05-10 20:31 2467In the previous tutorial you im ... -
Entity Framework in ASP.NET MVC Application (二)
2011-05-10 20:29 1699In the previous tutorial you cr ... -
Entity Frame Work 4.1调用存储过程
2011-05-10 20:24 2134在这个问题上,琢磨了很久了。今天终于找到了调用的方法。 存储 ... -
使用ef4.1 的dbcontext进行数据库循环操作
2011-04-24 23:06 2264如果你想要调用一个类的方法进行循环操作:官方的例子: Dis ... -
使用EF 4.1的DbContext
2011-04-24 22:36 3641简述:EF4.1包括Code First和DbContext ... -
ADO.NET 访问存储过程
2011-04-24 22:15 1590ADO.NET 访问存储过程其实也比较简单,但是有些小细节部分 ... -
JAVA与.NET的相互调用——通过Web服务实现相互调用(附原代码)
2011-04-24 20:58 1287JAVA与.NET是现今世界竞争激烈的两大开发媒体,两者语言有 ... -
视图模式/视图->视图包
2011-04-24 20:16 1472ASP.NET MVC(自V1起)就支持一个带控制器和视图的V ... -
SkipRequestValidation] –> [AllowHtml]
2011-04-24 20:15 1437ASP.NET MVC内置了防止HTML和跨站脚本注入攻击的支 ... -
Log4net 详细说明
2011-04-12 22:29 2071在实际项目中我们经常 ...
相关推荐
Code First是Entity Framework提供的一个开发模式,它允许开发者首先定义领域模型,即业务逻辑中的对象模型,然后使用Entity Framework将这些模型映射到数据库结构。这种方式鼓励设计驱动的开发流程,强调模型的...
Entity Framework的主要特点之一是支持多种建模方式,包括Database First、Model First和Code First。这些方式都可以用来建立实体数据模型,但它们的工作流程和实现方式不同。 Database First是一种传统的方式,先...
3. **数据库第一(Code First)**:一种常见的开发模式,通过定义C#类来创建数据库结构。"EntityFrameworkDemo"可能展示了如何使用`DbSet<T>`属性定义实体集合,以及如何使用`[Key]`、`[Required]`等特性来指定...
在本项目中,我们关注的是EF 6.0的Code First开发模式,这是一种在.NET Framework 4.8环境下构建数据库的应用方式。 Code First是EF的一个开发策略,它鼓励开发者从创建模型类开始,然后通过代码定义数据结构。这种...
实体框架(Entity Framework)是微软主要的数据访问技术,其发展历程中,Code First 是对实体数据模型构建方式的一种重要补充。首先,我们需要了解 Entity Framework 的基本概念和历史发展,以便深入理解 Code First...
用于演示EntityFramework6在CodeFirst模式下如何连接Oracle数据库的实例Demo 使用CRUD方式创建数据表,详细连接说明见代码注释,只需要更换连接字符串中的账户和数据库地址即可 .Net框架为4.5请注意匹配
这个“Entity Framework资料大全+实例”压缩包很可能包含了一系列关于EF的基础知识、进阶教程、实战案例和示例代码,旨在帮助开发者深入理解和熟练应用这个强大的工具。 1. **基本概念**:Entity Framework的核心...
在实际项目中,结合`Oreilly.Programming.Entity.Framework.Code.First.Nov.2011.epub`和`Oreilly.Programming.Entity.Framework.Code.First.Nov.2011.pdf`这两本书籍,你可以深入学习和理解Entity Framework Code ...
Code First是Entity Framework的一种开发模式,它允许开发者从编写数据模型类开始,然后通过框架的能力来生成数据库。 DbContext类是Entity Framework中的核心类,它代表了一个会话,这个会话负责与数据库交互,...
Entity Framework (EF) 是...总之,Entity Framework Code First为.NET开发者提供了一种高效、灵活的数据库开发方式,简化了数据库操作,提高了开发效率。通过深入理解和熟练运用,可以在实际项目中发挥出强大的作用。
ASP.NET MVC 应用程序利用 Entity Framework Code First 是一种现代Web开发的技术组合,它结合了ASP.NET MVC框架、Entity Framework(EF)数据访问库以及Code First开发策略。这个技术栈为构建高效、可扩展的数据库...
在SQLite和EF6的结合使用中,我们需要安装相应的NuGet包,如`System.Data.SQLite`和`EntityFramework`。安装完成后,我们可以在EF6的`DbContext`派生类中定义数据实体,并配置SQLite数据库的连接字符串。例如: ```...
Entity Framework (EF) 是微软开发的一个对象关系映射(ORM)框架,它允许开发者使用.NET 面向对象编程来操作数据库,而无需编写大量的SQL 代码。在Oracle数据库环境中,EF同样可以工作,但需要特定的Oracle适配器来...
在提供的压缩包文件中,`EF4FeatureCTP4.exe`可能是早期版本的EF工具或示例,而`EF.CodeFirst.Walkthrough`可能是一个包含Code First创建数据库的逐步指南或者代码示例。通过查看这些资源,你可以更深入地理解Code ...