• 小白学习之Code First(一)


    1、根据自己的理解,Code First :通过实体类和相关配置生成对应的数据库,实现实体和数据库的映射关系,或通过实体类和相关配置与已经生成的实体与已经存在的数据库搭建映射关系

     例:

    实体类:StudentInfo、ClassInfo

     1     public class ClassInfo
     2     {
     3         public int ID { get; set; }
     4         public string Name { get; set; }
     5         //每班都有很多学生
     6         public ICollection<StudentInfo> Students { get; set; }
     7     }
     8     public class StudentInfo
     9     {
    10         public int ID { get; set; }
    11         public string Name { get; set; }
    12         public char Gender { get; set; }
    13         public DateTime Birth { get; set; }
    14         //每个学生都有自己所属的一个班级
    15         public ClassInfo  ClassInfo { get; set; }
    16     }
    View Code

     上下文:CSContext

     1     public class CSContext:DbContext
     2     {
     3         public CSContext():base("name=ConnStr")
     4         {
     5         }
     6         //学生和班级的集合
     7         public DbSet<StudentInfo> StudentInfos { get; set; }
     8         public DbSet<ClassInfo> ClassInfos { get; set; }
     9     }
    10         
    View Code

    配置文件:App.Config

    1   ...
    2   <connectionStrings>
    3     <add name="ConnStr" connectionString="Server=localhost;DataBase=EFDemo;User ID=sa;password=***" providerName="System.Data.SqlClient"/>
    4   </connectionStrings>
    5   ...

    控制台:

     1         static void Main(string[] args)
     2         {
     3             //ID自动映射为数据库的主键
     4             ClassInfo classinfo = new Entities.ClassInfo() {
     5                 Name="一班"
     6             };
     7             StudentInfo studentinfo = new Entities.StudentInfo() {
     8                 Name = "王亮",
     9                 Gender = '',
    10                 Birth = Convert.ToDateTime("1980-01-01")
    11             };
    12             var context = new CSContext();
    13             //context.Entry<StudentInfo>(studentinfo).State = System.Data.Entity.EntityState.Added;
    14             //context.Set<StudentInfo>().Add(studentinfo);
    15             //context.StudentInfos.Add(studentinfo);
    16             context.Entry<ClassInfo>(classinfo).State = System.Data.Entity.EntityState.Added;
    17             context.SaveChanges();
    18             Console.WriteLine("OK");
    19             Console.ReadKey();
    20         }
    View Code

    数据库:自动创建对应database 、table及插入数据(自动产生对应的主外键)

    1 ...
    2 exec sp_executesql N'INSERT [dbo].[ClassInfoes]([Name])
    3 VALUES (@0)
    4 SELECT [ID]
    5 FROM [dbo].[ClassInfoes]
    6 WHERE @@ROWCOUNT > 0 AND [ID] = scope_identity()',N'@0 nvarchar(max) ',@0=N'一班'
    7 ...

    每天学习一点点,每天进步一点点
  • 相关阅读:
    策略模式-观察者模式-装饰者模式-工厂模式-单例模式
    mac下 tomcat8+jdk1.8+servlet+Spring环境搭建中的问题
    删除部分字符使其变成回文串问题——最长公共子序列(LCS)问题
    JAVA锁的膨胀过程和优化
    单例模式
    简单工厂模式(静态工厂)和工厂方法模式和抽象工厂模式
    从基层容器类看万变不离其宗的JAVA继承体系
    响应式布局1
    网页加载速度优化4--图片懒加载
    jquery选择器返回值
  • 原文地址:https://www.cnblogs.com/oren/p/7309677.html
Copyright © 2020-2023  润新知