MVC3+CodeFirst

来源:互联网 发布:ubuntu重新安装vim 编辑:程序博客网 时间:2024/05/18 01:33

● MVC3 中文版: 下载地址

MVC3 文件夹说明:

文件夹作用/ControllersControllers处理来自浏览器的输入,决定要做什么,并且把结果返回给用户/ViewsViews包含UI模板/ModelsModels包含数据及对数据的操作/Content包含图片、CSS及其它静态内容/Script包含JavaScript文件/Add_Data包含数据库文件(注:通常用来保存网站配置的SQL Express数据库、Access数据库等随网站一起发布的数据库文件。使用Sql Server、MySql之类数据库的可以无视它)

MVC3 创建步骤:

Step1. 创建的是一个“空的”Asp.net Mvc3的项目,并且让视图引擎选定为Razor。

* 这个时候直接点击运行会直接访问http://localhost:31207/,无法找到资源,因为里面没内容,创建项目时选择Internet Application模板. 就会生成个默认的可以执行的页面。

Step2. EFCodeFirst相关问题:

1)工具下载

  CTP5(实体框架特性): CodeFirst 通过实体代码自动创建数据库  下载地址

  CodeFirst辅助工具: EF Power Tool  根据数据库生成MODEL类,生成EF Generated View提高EF性能 下载地址

2)安装CTP5后添加CodeFirst的引用:.net组件名称为EntityFramework 和 System.Data.Entity

3)编写实体类 (置于Models文件夹)

  public class Department

  {

        public int DepartmentID { get; set; }

        [MinLength(2)]

        [MaxLength(20)]//在数据库中生成nvarchar(20)的字段

        public string DepartName { get; set; }

        public virtual ICollection<Employee> Employees {get; set; } //使用virtual字段延迟加载

  }

  public class Employee

  {  

        public int EmployeeID { get; set; }

        public int Age { get; set; }

        public int DepartmentID { get; set; }

        public virtual Department Department { get; set; } //使用virtual字段延迟加载

  }

CTP5版支持的注释的完整列表如下:

  • KeyAttribute
  • StringLengthAttribute
  • MaxLengthAttribute
  • ConcurrencyCheckAttribute
  • RequiredAttribute
  • TimestampAttribute
  • ComplexTypeAttribute
  • ColumnAttribute  置于一个属性上,指定其字段名,序数和数据类型
  • TableAttribute  置于一个类上,指定其数据表名和定义
  • InversePropertyAttribute   置于一个导航属性上,指定代表关系另一端的属性
  • ForeignKeyAttribute   置于一个导航属性上,指定代表关系外键的属性
  • DatabaseGeneratedAttribute   置于一个属性上,指定数据库该如何为该属性生成值(Identity, Computed 或者 None)
  • NotMappedAttribute    置于一个属性或类上,将其排除在数据库外

其他特性:
[Display(Name = "用户名")]

常用的验证属性:
[Required]
[DataType(DataType.EmailAddress)]
[DataType(DataType.Password)]
[Compare("Password", ErrorMessage ="密码和确认密码不匹配。")]

4)编写Context (放置于Models文件夹)

public classRenContext : DbContext

    {

        public DbSet<Employee> Employees { get; set; }

        public DbSet<Department> Departments { get; set; }

    //不写这个默认的数据库名称就是RenContext

        public RenContext() : base("name=dbStr") { }

        //这个方法可以没有,重写的这个方法里,我们可以移除一些契约,还可以配置数据库映射关系

        protected override void OnModelCreating(ModelBuilder modelBuilder)

        {

            modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();//移除复数表名的契约

            modelBuilder.Conventions.Remove<IncludeMetadataConvention>();//防止黑幕交易要不然每次都要访问 EdmMetadata这个表

            /*

可以删除的公约有:

Namespace:System.Data.Entity.ModelConfiguration.Conventions.Edm

• AssociationInverseDiscoveryConvention

寻找导航上互相引用的类的属性,并将它们配置为逆属性的相同的关系。

• ComplexTypeDiscoveryConvention

寻找有没有主键的类型,并将它们配置为复杂类型。

• DeclaredPropertyOrderingConvention

确保每个实体的主要关键属性优先于其他属性。

• ForeignKeyAssociationMultiplicityConvention

配置是必需的还是可选的关系基于为空性外键属性,如果包含在类定义中。

• IdKeyDiscoveryConvention

查找名为 Id <TypeName> Id的属性,并将他们配置作为主键。

• NavigationPropertyNameForeignKeyDiscoveryConvention

使用外键关系,使用 <NavigationProperty> <PrimaryKeyProperty>模式作为属性的外观。

          • OneToManyCascadeDeleteConvention

交换机上层叠删除,所需的关系。

• OneToOneConstraintIntroductionConvention

将配置为一个:一个关系的外键的主键。

• PluralizingEntitySetNameConvention

配置为多元化的类型名称的实体数据模型中的实体集的名称。

• PrimaryKeyNameForeignKeyDiscoveryConvention

使用外键关系,使用 <PrimaryKeyProperty>模式作为属性的外观。

• PropertyMaxLengthConvention

配置所有的字符串和字节 []属性,默认情况下具有最大长度。

• StoreGeneratedIdentityKeyConvention

配置默认情况下将标识所有整数的主键。

• TypeNameForeignKeyDiscoveryConvention

使用外键关系,使用 <PrincipalTypeName> <PrimaryKeyProperty>模式作为属性的外观。

*/

        }

    }

5)数据库设置

● 新增添数据库

  [没有连接串的情况]  将会在本地的 .\SQLExpress 中创建一个默认的数据库。

  [显式指定连接串]  在 web.config 中增加一个连接串的配置来显式指定,连接串的名字需要匹配 DbContext 类的名字,例:

  <connectionStrings>
     <addname="RenContext"connectionString="DataSource=ACER-PC\HHSQLSERVER;Initial Catalog=REN;Integrated Security=True"
       providerName="System.Data.SqlClient"/>
  </connectionStrings>

  ● 修改数据库

8)常用网址

用EF Code First和ASP.Net MVC3进行类级别模型验证

一步一步学习ASP.NET MVC3 &EF Code First CTP 5&DI

Repository模式

Code First中的约定

CTP5版: 流畅 API 例子

实体框架代码优先CTP5发布

EF特性CTP5版: 代码优先示范

跟我学MVC系列(Repository模式、LINQ、EF、IOC框架Castle、JQuery、AJAX)

Entity Framework 4.1 Code First学习之路(一)

MVC3教程之实体模型和EF CodeFirst

CTP5自动重建数据库

Entity Framework学习高级篇1—改善EF代码的方法

Entity Framework 4 代码优先开发:http://www.c_ongci.com/item/codefirst (去掉下划线)

 

本文转自:http://www.cnblogs.com/shawker/archive/2011/07/13/2105153.html

原创粉丝点击