小白学习之Code First(一)
2024-10-21 16:09:04
1、根据自己的理解,Code First :通过实体类和相关配置生成对应的数据库,实现实体和数据库的映射关系,或通过实体类和相关配置与已经生成的实体与已经存在的数据库搭建映射关系
例:
实体类:StudentInfo、ClassInfo
public class ClassInfo
{
public int ID { get; set; }
public string Name { get; set; }
//每班都有很多学生
public ICollection<StudentInfo> Students { get; set; }
}
public class StudentInfo
{
public int ID { get; set; }
public string Name { get; set; }
public char Gender { get; set; }
public DateTime Birth { get; set; }
//每个学生都有自己所属的一个班级
public ClassInfo ClassInfo { get; set; }
}
上下文:CSContext
public class CSContext:DbContext
{
public CSContext():base("name=ConnStr")
{
}
//学生和班级的集合
public DbSet<StudentInfo> StudentInfos { get; set; }
public DbSet<ClassInfo> ClassInfos { get; set; }
}
配置文件:App.Config
...
<connectionStrings>
<add name="ConnStr" connectionString="Server=localhost;DataBase=EFDemo;User ID=sa;password=***" providerName="System.Data.SqlClient"/>
</connectionStrings>
...
控制台:
static void Main(string[] args)
{
//ID自动映射为数据库的主键
ClassInfo classinfo = new Entities.ClassInfo() {
Name="一班"
};
StudentInfo studentinfo = new Entities.StudentInfo() {
Name = "王亮",
Gender = '男',
Birth = Convert.ToDateTime("1980-01-01")
};
var context = new CSContext();
//context.Entry<StudentInfo>(studentinfo).State = System.Data.Entity.EntityState.Added;
//context.Set<StudentInfo>().Add(studentinfo);
//context.StudentInfos.Add(studentinfo);
context.Entry<ClassInfo>(classinfo).State = System.Data.Entity.EntityState.Added;
context.SaveChanges();
Console.WriteLine("OK");
Console.ReadKey();
}
数据库:自动创建对应database 、table及插入数据(自动产生对应的主外键)
...
exec sp_executesql N'INSERT [dbo].[ClassInfoes]([Name])
VALUES (@0)
SELECT [ID]
FROM [dbo].[ClassInfoes]
WHERE @@ROWCOUNT > 0 AND [ID] = scope_identity()',N'@0 nvarchar(max) ',@0=N'一班'
...
最新文章
- Linux sendmail发送邮件失败诊断案例(一)
- LeetCode之LRU Cache 最近最少使用算法 缓存设计
- Wcf for wp8 上传图片到服务器,将图片名字插入数据库字段(五)
- Opencv 3入门(毛星云)摘要
- 从C中变化过来的各种语言的printf输出格式
- 使用iphone5修剪视频的方法
- Android 常用 adb 命令
- 利用Vagrant搭建多平台环境
- codeforces 630F Selection of Personnel(组合数)
- 使用tuple返回多个值
- Chrome 中的彩蛋——T-Rex
- nodeclub 学习记录
- location将地址栏参数拆分成键值对的对象
- Exp2 后门原理与实践 20164311
- TCP与UDP区别小结
- iOS runtime执行时具体解释
- mac 下安装mongodb
- 1 - django-介绍-MTV-命令-基础配置-admin
- ASP.NET中上传图片检测其是否为真实的图片 防范病毒上传至服务器
- 笔记:javascript操作iframe内的DOM元素,及调用iframe内的方法
热门文章
- WPF上下滚动字幕
- asp.net mvc 3 linq实现数据的增、删、改、查、
- python中的内置函数(一), lambda, filter, map
- LOJ#2070. 「SDOI2016」平凡的骰子(计算几何)
- Android中线程和线程池
- 可以修改类不用重启Tomcat加载整个项目
- axiso 生产环境跨域配置(可用)
- (三)Audio子系统之AudioRecord.startRecording
- 工具软件推荐——GifCam
- (转)调优 DB2 UDB v8.1 及其数据库的最佳实践