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());
    }

      

  • 相关阅读:
    鼠标移入和鼠标移出的提示,和样式的转换
    HTML5——新特性,拖放
    关于订阅发布模式
    titanium环境配置
    Matlab与C混编的介绍
    一个相对健壮的node 静态http服务器
    阻赛非阻塞同步异步
    最近在做的事以及一些安排
    说一说js中__proto__和prototype以及原型继承的那些事
    PHP写的爬虫,爬指定网站页面上的各种图片
  • 原文地址:https://www.cnblogs.com/answercard/p/5187501.html
Copyright © 2011-2022 走看看