以下是一个将数据从SQL Server函数填充到模型的ASP.NET Core MVC解决方案的代码示例:
首先,确保你的项目中已经安装了相关的NuGet包,包括Microsoft.EntityFrameworkCore
和Microsoft.EntityFrameworkCore.SqlServer
。
创建一个模型类来表示从SQL Server函数返回的数据。例如,你可以创建一个名为MyModel
的类:
public class MyModel
{
public int Id { get; set; }
public string Name { get; set; }
public DateTime CreatedDate { get; set; }
}
AppDbContext
的类:public class AppDbContext : DbContext
{
public AppDbContext(DbContextOptions options) : base(options) { }
public DbSet MyModels { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity().HasNoKey(); // 告诉EF Core不要尝试从数据库中推断主键
}
}
Startup.cs
文件中配置数据库上下文和连接字符串。例如,将以下代码添加到ConfigureServices
方法中:services.AddDbContext(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
HomeController
的控制器,并添加一个名为Index
的动作:public class HomeController : Controller
{
private readonly AppDbContext _dbContext;
public HomeController(AppDbContext dbContext)
{
_dbContext = dbContext;
}
public IActionResult Index()
{
var myModelData = _dbContext.MyModels.FromSqlRaw("SELECT * FROM dbo.MyFunction()").ToList();
return View(myModelData);
}
}
Views/Home
文件夹中创建一个名为Index.cshtml
的视图文件:@model List
My Model Data
Id
Name
Created Date
@foreach (var item in Model)
{
@item.Id
@item.Name
@item.CreatedDate
}
这样,当你访问应用程序的主页时,控制器将从SQL Server函数获取数据并将其传递给视图,最后显示在页面上。