zoukankan      html  css  js  c++  java
  • 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());
    }

      

  • 相关阅读:
    【大数据面试之对线面试官】MapReduce/HDFS/YARN面试题70连击
    2021年最新版大数据面试题全面总结-持续更新
    Hbase性能优化百科全书
    【大数据面试题】Flink第一弹60连发
    DockerFile
    Docker容器数据卷
    Docker入门
    八、Sentinel服务保护框架
    七、Gateway高可用集群与动态网关
    五、Nacos集群部署实现原理
  • 原文地址:https://www.cnblogs.com/answercard/p/5187501.html
Copyright © 2011-2022 走看看