EntityFramework之创建数据库及基本操作(一)
那时学EF的时候还没有Code First,只有DB First,生成的是一个EDMX文件,Code First则没有这文件,下面直接上代码吧
数据库创建以及建表
1、首先我们新建一个新项目,使用Nuget搜索EntityFramework,如果想找到对应的中文包,可以搜索EntityFramework.zh-Hans即可。
本人是话是直接搜索EntityFramework.zh-Hans,这样会自动把中文包和类库一起安装,比较方便。
2、接着建model实体
1 public class Product 2 { 3 public int Id { get; set; } 4 public string Name { get; set; } 5 public string Description { get; set; } 6 }
3、创建一个EntityContext并继承自DbContext
1 public class EntityContext : DbContext 2 { 3 public EntityContext() 4 : base("name=DBConnectionString") 5 { 6 7 } 8 9 public DbSet<Product> Product { get; set; } 10 11 protected override void OnModelCreating(DbModelBuilder modelBuilder) 12 { 13 //不使用modelBuilder.Configurations.AddFromAssembly方法则需要逐个添加,如果数量多的话比较麻烦 14 //modelBuilder.Configurations.Add(new OneToMany.Map.ProductMap()); 15 //此方法可以将当前程序集下所有继承了ComplexTypeConfiguration、EntityTypeConfiguration类型的类添加到注册器 16 modelBuilder.Configurations.AddFromAssembly(Assembly.GetExecutingAssembly()); 17 base.OnModelCreating(modelBuilder); 18 } 19 }
4、在web.config文件中添加数据库连接字符串
1 <connectionStrings> 2 <add name="DBConnectionString" connectionString="Data Source=.;Initial Catalog=BasicOpt;Integrated Security=true" providerName="System.Data.SqlClient" /> 3 </connectionStrings>
5、接着创建实体映射
1 public class ProductMap : EntityTypeConfiguration<Product> 2 { 3 public ProductMap() 4 { 5 ToTable("Product"); //指定表明 6 HasKey(p => p.Id); //指定主键 7 //指定Name字段在数据库中列名为DBName、长度500、非空,其他的话可以自己试下 8 Property(p => p.Name).HasColumnName("DBName").HasMaxLength(500).IsRequired(); 9 } 10 }
6、我们写一个新增实体的操作,让Code First生成数据库
1 EntityContext db = new EntityContext(); 2 var product = new Models.Product() { Name = "电磁炉", Description = "电器" }; 3 db.Set<Product>().Add(product); 4 db.SaveChanges();
我们打开数据库管理工具看下是否有创建数据库以及新增数据
这样几步操作就完成了一个基本的例子,往后文章将介绍下一对一、一对多、多对多关系代码如何编写,以及数据库迁移操作。
分类:
EntityFramework
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义