MVC总结

Install-package Entityframework  安装EF

1) 安装 Install-Package Autofac

Enable-migrations启动数据迁移

add-migration 'CreateDetabase' 创建迁移

update-database 更新数据库

add-migration 通过迁移名,知道你做什么操作

poco的不能有集合对象,只能输属性

 

我只执行增删改查语句,不进行其他操作(如果不对数据库有任何其他操作需要关闭对数据库的检查操作

Database.SetInitializer(null);

 

 

第一个是一对多,

第二个是多对多

如果表不够多的话,有可能在表非常多,有可能级联已发生错误

 

protected override void OnModelCreating(DbModelBuilder modelBuilder)

        {

            base.OnModelCreating(modelBuilder);

            modelBuilder.Conventions.Remove();

            modelBuilder.Conventions.Remove();

        }

 

如果更改表名[Table(“需要更改的表名”)]必须要引用的命名空间

using System.ComponentModel.DataAnnotations;

[Key] 设置主键

[Required] 不允许为空

[Display(Name ="性别")] 更改MVC里的名字

[StringLength(30,MinimumLength =2)] 设置字段长度和最小值

[DataType(Data.Password)] 表示密码值 *

整型类型和DateTime默认不允许为空,字符串允许为空,在类型后面加个?表示允许为空。如 public  int?  Age{get;   set;}

计算属性[NotMapped]:不做映射,数据库不生成对应的类

混合注解[ComplexType]

EF的对象状态 : 游离态   , 持久态    ,瞬时态

瞬时态 :如下

Added(被添加的) 我发生了添加但没有保存,

Modified(被修改的)我发生了修改但没有保存,

 Deleted(被删除的)我发生了删除但没有保存

游离态 :如下

Detached表示和数据库没有一点关系,可以认为单机

持久态 :如下

Unchanged 从数据库取出来之后没有任何修改, 可以认为联网。

--------------------------------

添加

  public bool Add(T  t)

        {

            Context.Entry(t).State = EntityState.Added;

            return Save();

        }

修改

public bool Edit(T t)

        {

            Context.Entry(t).State = EntityState.Modified;

            return Save();

        }

--------

删除

public bool Remove(int Id)

        {

            if (GetAll().Any(m => m.Id == Id))

            {

                GetAll().Single(m => m.Id == Id).IsDeleted = true;

                return Save();

            }

            else

            {

                throw new Exception("所传ID没有对应实体");

            }

        }

五态的好处:省略查询操作,直接把内存中的对象改为持久态。前提(内存数据必须和数据库数据一样)

RedirectToAction  重定向

if(ModelState.IsValid) 是否通过效验

[ActionName()] 起别名

[NonAction()]只是请求业务的,不需要展示

JsonResuit 返回Json JsonRequestBehavior.AllowGet;

FileResuit 返回文件,return File(路径,文件类型)

RouteValueDiceionary() 返回键值对

EmptyResuit 返回空白结果

 

 

 

 

 

你可能感兴趣的:(MVC总结)