要在ASP.NET Core Web API中建立EF Core模型的外键关系,可以按照以下步骤进行操作:
例如,我们创建两个实体类:Author和Book,Book实体类将包含一个指向Author实体类的外键。
public class Author
{
public int Id { get; set; }
public string Name { get; set; }
public List Books { get; set; }
}
public class Book
{
public int Id { get; set; }
public string Title { get; set; }
public int AuthorId { get; set; }
public Author Author { get; set; }
}
DbContext类中添加对应的DbSet和配置外键关系。public class ApplicationDbContext : DbContext
{
public ApplicationDbContext(DbContextOptions options)
: base(options)
{
}
public DbSet Authors { get; set; }
public DbSet Books { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity()
.HasOne(b => b.Author)
.WithMany(a => a.Books)
.HasForeignKey(b => b.AuthorId);
}
}
Startup.cs文件的ConfigureServices方法中配置数据库上下文和连接字符串。public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
// ...
}
[ApiController]
[Route("api/[controller]")]
public class BooksController : ControllerBase
{
private readonly ApplicationDbContext _context;
public BooksController(ApplicationDbContext context)
{
_context = context;
}
// GET: api/books
[HttpGet]
public async Task GetBooks()
{
var books = await _context.Books.ToListAsync();
return Ok(books);
}
// POST: api/books
[HttpPost]
public async Task PostBook(Book book)
{
_context.Books.Add(book);
await _context.SaveChangesAsync();
return CreatedAtAction(nameof(GetBook), new { id = book.Id }, book);
}
// ...
}
这样,我们就建立了ASP.NET Core Web API和EF Core模型的外键关系。在上述示例中,Book实体类包含一个AuthorId属性作为外键,同时也定义了一个Author属性作为导航属性,用于访问关联的Author实体。