EntityFramework简介

1.数据库链接配置
官方文档: https://msdn.microsoft.com/en-us/data/jj556606
  1.1通过配置文件配置(App.config或Web.config), 这种配置方式也有两种形式, 一个是配置connectionStrings节, 另一个是配置entityFramework节
  1.2通过SqlConnectionFactory配置
  1.3通过DBContext构造函数配置

2.创建数据的策略
  2.1当数据库不存在时创建数据库(CreateDatabaseIfNotExists), 默认策略

  2.2当数据模型改变时, 先删除数据库, 在重新创建数据库(DropCreateDatabaseWhenModelChanges)

  2.3每次都删除原数据库, 创建新的数据库(DropCreateDatabaseAlways)

  2.4不对数据库进行任何删除,创建操作(null)

3.实体_表的映射配置
  如果实体和表都是单独创建的, 那我们需要实体和表之间的映射关系. 有两种实现方式
  3.1 通过属性标注(Attribute)  

[Table("Product", Schema = "dbo")]
public class Product
{
    [Column("ProductID")]
    public int ProductID { get; set; }

    [MaxLength(100)]
    [Required, Column("ProductName")]
    public string ProductName { get; set; }

     [Column("UnitPrice", TypeName = "MONEY")]
     public decimal UnitPrice { get; set; }
}

  3.2 通过Fluent API方式, 分两种形式, 见代码1和代码2

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Product>().HasKey(t => t.ProductID);
    modelBuilder.Entity<Product>().Property(t => t.ProductID)
        .HasColumnName("ProductID")
        .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
}
    public class ProductMap : EntityTypeConfiguration<Product>
    {
        public ProductMap()
        {
            // Primary Key
            this.HasKey(t => t.ProductID);

            // Properties
            this.Property(t => t.ProductID)
                .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
            this.Property(t => t.ProductName)
                .IsRequired()
                .HasMaxLength(100);

            // Table & Column Mappings
            this.ToTable("Product");
            this.Property(t => t.ProductID).HasColumnName("ProductID");
            this.Property(t => t.ProductName).HasColumnName("ProductName");
            this.Property(t => t.UnitPrice)
                .HasColumnName("UnitPrice")
                .HasPrecision(18, 2);
        }
    }

//添加配置信息
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Configurations.Add(new ProductMap());
}

  

原文地址:https://www.cnblogs.com/answercard/p/5187501.html