【发布时间】:2022-09-25 00:30:25
【问题描述】:
我是 Dotnet 和 EF 的新手。我试图学习EF。因此,我使用 ASP.NET CORE Web 应用程序创建了一个待办事项应用程序。基本上它是一个 Razor 页面应用程序。我创建了另一个使用 EF 的类库项目。我添加了对第一个项目的引用。它是 ASP.NET CORE 与 EF 的组合。 这是 DbContext 文件。
namespace TaskMaster_DataLayer.Models
{
public class TmDbContext : DbContext
{
public TmDbContext() : base()
{
}
public DbSet<Status> Statuses { get; set; }
public DbSet<Task> Tasks { get; set; }
}
}
这是 index.cshtml.cs 文件。
namespace TaskMaster.Pages
{
[BindProperties]
public class IndexModel : PageModel
{
private readonly ILogger<IndexModel> _logger;
private readonly TmDbContext taskMasterContext;
public List<Status> stsList;
public Task? task = null;
public string? TaskValue { get; set; }
public DateTime? DueDate { get; set; }
public string? StatusName { get; set; }
public Status status { get; set; }
public IndexModel(ILogger<IndexModel> logger)
{
_logger = logger;
taskMasterContext = new TmDbContext();
stsList = taskMasterContext.Statuses.ToList();
}
public void OnGet()
{
}
public void OnPost()
{
TaskValue = Request.Form[\"Task\"];
if(TaskValue != null && TaskValue != String.Empty)
{
foreach(var sts in stsList)
{
var name = sts.GetName();
if(name == StatusName)
{
status = sts;
break;
}
}
task = new Task()
{
Name = TaskValue,
DueDate = DueDate,
StatusId = status.Id,
status = status,
};
taskMasterContext.Tasks.Add(task);
taskMasterContext.SaveChanges();
}
}
}
}
提交表单时,正在执行 OnPost 方法。我没有收到任何错误,但数据没有保存或插入数据库。该任务已添加到 DbSet 但 SaveChanges 方法不起作用。我不知道我错过了什么。
任何人都帮帮我。我很沮丧。
-
你找对地方了吗?
-
我也试图改变实体的状态......这也行不通
-
没有得到你先生@ErikEJ
-
\“不管用\”不是问题的描述。提供所有相关信息。您确定它不起作用的确切程度如何?你的连接字符串是什么样的?如果我不得不猜测,我会说您正在使用本地数据文件,并且要么在错误的文件中查找,要么在被新副本覆盖后查找正确的文件。这是一个常见问题,并且可能会在有关此主题的搜索中出现。
-
` <add name=\"TmDbContext\" connectionString=\"data source=FAIRYTALE\\SQLEXPRESS;Initial Catalog=DB_TaskMaster;Integrated Security=True;\" providerName=\"System.Data.SqlClient\" />` 这是我的连接字符串的样子。我使用了代码优先的方法。初始迁移、数据库创建和使用迁移文件中的 Up() 方法播种数据已成功完成。在将任务对象添加到 DbContext 实例的 Tasks 属性后,我尝试在 OnPost() 方法中使用 Console.WriteLine,它很好地打印了所有数据,但 SaveChanges 方法没有对数据库执行任何操作。 @约翰
标签: c# entity-framework asp.net-core entity-framework-6 razor-pages