Code First 入门
Code First是Entity Framework(EF)中一种流行的开发模式,它允许开发者专注于应用程序的域模型(即类),而由EF根据这些类自动生成数据库结构。以下是Code First的详细入门指南:
1. 安装Entity Framework
首先,你需要在你的项目中安装Entity Framework。这通常可以通过NuGet包管理器来完成。在Visual Studio中,你可以右键点击你的项目 -> 选择“管理NuGet程序包” -> 搜索“EntityFramework” -> 点击“安装”。
2. 创建数据模型
在Code First中,你首先定义你的数据模型,即应用程序中的类。这些类将映射到数据库中的表。例如,你可以创建一个表示博客的类:
public class Blog
{
public int BlogId { get; set; } // 主键,EF默认会将名为Id或类名+Id的属性作为主键
public string Name { get; set; }
// 其他属性...
// 导航属性,表示与其他实体(如Post)的关系
public virtual ICollection<Post> Posts { get; set; }
}
public class Post
{
public int PostId { get; set; }
public string Title { get; set; }
public string Content { get; set; }
// 外键属性,指向Blog
public int BlogId { get; set; }
// 导航属性,表示与Blog的关系
public virtual Blog Blog { get; set; }
}
3. 创建DbContext
DbContext是EF的核心类,它表示一个与数据库的会话。你需要创建一个继承自DbContext的类,并在其中指定你的数据模型。例如:
public class BloggingContext : DbContext
{
// DbSet<TEntity>表示一个集合,用于查询和保存数据
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
// 可以在这里配置模型(如设置主键、外键、索引等)
// ...
}
4. 配置数据库连接
你需要在应用程序的配置文件(如App.config或Web.config)中指定数据库连接字符串。EF将使用此连接字符串来连接到数据库。例如:
<connectionStrings>
<add name="BloggingContext"
connectionString="Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;"
providerName="System.Data.SqlClient" />
</connectionStrings>
在DbContext中,你可以通过构造函数来指定连接字符串的名称:
public BloggingContext() : base("name=BloggingContext") { }
5. 读写数据
现在你可以使用DbContext来查询和保存数据了。例如:
using (var db = new BloggingContext())
{
// 创建一个新的博客并保存到数据库
var blog = new Blog { Name = "My New Blog" };
db.Blogs.Add(blog);
db.SaveChanges();
// 从数据库读取所有博客并显示名称
var blogs = db.Blogs.ToList();
foreach (var b in blogs)
{
Console.WriteLine(b.Name);
}
}
6. 迁移数据库
当你的数据模型发生变化时(例如,你添加了一个新的属性或类),你需要更新数据库以反映这些变化。EF提供了迁移功能来帮助你自动执行这些更改。你可以使用NuGet包管理器来添加迁移、更新数据库等。
总结
以上就是Code First的详细入门指南。通过遵循这些步骤,你可以使用Entity Framework的Code First模式来轻松地创建、查询和保存数据。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)