EF Code-First是一种将Microsoft的Entity Framework与POCO类一起使用的方式,而不是模型优先或DB优先。
我有一个数据库,需要在两个现有表之间引入新的必需的 FK 关系。由于它们都有现有数据(并且产品已经在生产中运行),所以我
我有一个 linq 查询,需要 31 秒。这是我第一次收到这么晚的询问,我不知道该怎么办。 让我向您展示我的查询: 公共 IEnumerable<
如何通过 LINQ Join() 链接两个 IQueryable?
我有两个 IQueryable: 成分: 英格德 描述 可用成分: 英格德 我已经有一个 IQueryable for Ingredient: var ingQuery = 来自 context.Ingredients 中的 i 选择...
Linq 使用 GroupBy 时,Inclusion 不起作用
包括 matchparticipants 不起作用。当我调试时它总是说 Null。 但是当我将 GroupBy 放在注释中时,它工作正常。我正在使用实体框架 4.3.1 和代码优先。 实体: 公开
我收到错误,如屏幕截图所示: 我还检查了我的 nuget 包(版本)和实体框架包。 我向chatgpt寻求帮助,我做了它想做的事情,但它不起作用。
我有这个设置(粗略地说,我已经编辑掉了不相关的代码以提高可读性)。 公共类 LevelSection { 公共 Guid Id { 获取;放; } 公共 Guid UserDataId { 获取;放; } } 进而 p...
如何使用 Identity ASP.NET Core 通过代码优先迁移来播种用户和角色
我创建了一个新的干净的asp.net 5项目(rc1-final)。使用身份验证我只有 ApplicationDbContext.cs 和以下代码: 公共类ApplicationDbContext:
如何通过 AutoMapping 到 Dto 高效地进行具有多个导航/级别的 EFCore 7 查询?
我第一次在 Asp.net WebAPI 中的端点上下文中使用 EFCore。 我有一张场地表,我正在尝试: 查询他们 通过 AutoMapper 将它们传送到 Dto/公共 mo...
我正在努力解决来自同一张表的 2 个外键的问题: 公开课人 { 公共 int PId { 得到;放; } 公共字符串名称 { 得到;放; } 公共诠释? HomeAddressId { 得到;...
Blazor WASM SqlException:当 IDENTITY_INSERT 设置为 OFF 时,无法在表“类别”中为标识列插入显式值
很抱歉发布了看似重复的内容,但请多多包涵! 我第一次使用 Entity Framework 开发 Blazor .NET Core 应用程序。我的项目基于 Thomas Beck 的项目 f...
我正在构建一个具有简单 CRUD 操作的 ASP.NET Web Api 和一个应该使用 EF Code First 和迁移生成的数据库。 在项目的结构方面,我使用的是 ASP.NET ...
这是生成表格的模型类。 公开课使命 { [钥匙] 公共字符串 ID { 得到;放; } [范围(最小值:1,最大值:int.MaxValue)] public int MinDayRate { 得到;放; } ...
如何使用 EF Core Code First 在 Oracle DB 中使用自动递增 ID 播种数据
在将 Oracle DB 与 EF Core 和数据库种子一起使用时,我遇到了自动生成主键值的问题。 示例实体: 公共类状态:IBaseEntity,ILastEdited { [密钥,数据库生成(
EF 核心错误 - 未找到项目。更改当前工作目录或使用 --project 选项
我正在使用 Visual Studio 2015 和 dotnet 核心,并尝试使用 Sqlite 和本文档/教程开发一个 EF Core Code First 项目,它也使用 Sqlite => NET Core - 新数据库 ...
EF core 有没有办法使用 dbContext 生成迁移脚本
寻找使用上下文生成 sql 脚本以从一个特定迁移迁移到另一个的代码优先方法。我似乎无法在网上找到这个。 就像是 上下文.数据库.
C# 代码首先在 PM 控制台尝试更新数据库时,数据库中已经有一个名为 xxx 的对象
我删除了一些表,以为它们会在运行我的应用程序时重新创建,但它们不是,它说找不到表。因此,为了重新运行迁移,我已将它们从迁移任务中删除...
来自 3 个表的 POST 和 GET 值通过多对多关系与 Code First 链接
Visual Studio Code 中带有多个可选复选框的 Html 表单: 车型: 带有多个可选复选框的 Visual Studio Code 中的 Html 表单: <form name="CarServ" id="myForm"> <div> <label>CarModel:</label> <input type="text" id="model" size="65" name="CarModel" placeholder="Enter Car Model" required> </div> <div class="check"> <label>Addons:</label> <input type="checkbox" name ="SelectedCheckboxes[]" value="10%off First service visit" id="10%off First service visit"> <label for="10%off First service visit">10%off First service visit</label> <input type="checkbox" name="SelectedCheckboxes[]" value="10%off Waterwash" id="10%off Waterwash"> <label for="10%off Waterwash">10%off Waterwash</label> <input type="checkbox" name ="SelectedCheckboxes[]" value="Free AC Inspection" id="Free AC Inspection"> <label for="Free AC Inspection">Free AC Inspection</label> </div> <button id="btn" type="submit">Submit</button> </form> dotnet core api 中的三种模型, CarForm.cs: public class CarForm { public int Id { get; set; } [Required] public string CarModel { get; set; } [Required] public string SelectedCheckboxes { get; set; } public IList<Selection> Selections { get; set; } } 插件.cs: public class Addon { public int Id { get; set; } public string CheckboxName { get; set; } public IList<Selection> Selections { get; set; } } Selection.cs: public class Selection { public int CarFormId { get; set; } public CarForm CarForms { get; set; } public Addon Addons { get; set; } public int AddonId { get; set; } } CarDbContext.cs: public class CarDbContext : DbContext { public CarDbContext(DbContextOptions<CarDbContext> options) : base(options) { } public DbSet<CarForm> CarForms { get; set; } public DbSet<Addon> Addons { get; set; } public DbSet<Selection> Selections { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<Selection>() .HasKey(s => new { s.CarFormId, s.AddonId }); modelBuilder.Entity<Addon>().HasData( new Addon { Id = 1, CheckboxName = "10%off First service visit" }, new Addon { Id = 2, CheckboxName = "10%off Waterwash" }, new Addon { Id = 3, CheckboxName = "Free AC Inspection" }); } } 创建控制器类: namespace CarServiceFormApi.Controllers { [ApiController] [Route("api/[controller]")] public class CarServiceFormController : ControllerBase { private readonly CarDbContext _context; public CarServiceFormController(CarDbContext context) { _context = context; } [HttpPost("submit-form")] public IActionResult SubmitForm([FromBody] CarForm carForm) { if (!ModelState.IsValid) { return BadRequest(ModelState); } // Save the CarForm to the database _context.CarForms.Add(carForm); _context.SaveChanges(); // Create the selections for the CarForm var selections = carForm.SelectedCheckboxes.Select(id => new Selection { CarFormId = carForm.Id, AddonId = id }); _context.Selections.AddRange(selections); _context.SaveChanges(); return Ok(); } [HttpGet("get-form-data/{id}")] public async Task<IActionResult> GetFormData(int id) { // Retrieve the CarForm from the database var carForm = await _context.CarForms.Include(cf => cf.Selections).ThenInclude(s => s.Addons).FirstOrDefaultAsync(cf => cf.Id == id); if (carForm == null) { return NotFound(); } // Return the CarForm as JSON return Ok(carForm); } } } 基本上我想要实现的是,我的 html 表单输入详细信息必须发布到 API 并存储在数据库中。然后,使用 GET 方法,我试图在成功时将数据检索回控制台。由于它是一个多选复选框,我将一组 Selectedcheckboxes 传递给 API 并尝试将其存储在数据库中。 现在当我运行我的 html 表单时,我在控制台上收到一个错误,如 {"type":"https://tools.ietf.org/html/rfc7231#section-6.5.1","title":"One or more validation errors occurred.","status":400,"traceId":"00-d0f3aa9cab0ad5f1450f6bbb403a1a9c-adf3f2910efaeafb-00","errors":{"CarModel":["The CarModel field is required."],"Selections":["The Selections field is required."],"SelectedCheckboxes":["The SelectedCheckboxes field is required."]}} 它显示“选择”字段是必需的!但我还没有在“CarForm.cs”中声明一个选择字段。我希望我的“CarForm.cs”上的选择线是执行链接模型的功能。无法弄清楚我在代码中哪里出错了。 尝试将SelectedCheckboxes[]更改为简单的SelectedCheckboxes。当后端实际上是单个字符串值时,您正试图绑定一个列表。 Selections 字段与 CarForm 具有循环依赖性。最好创建一个与 DTO 数据库关系不紧密耦合的单独视图模型。 基本上我想要实现的是,我的 html 表单输入详细信息 必须发布到 API 并存储在数据库中。然后,使用 GET 方法我试图在成功时将数据检索回控制台 根据您的描述和场景,您的代码片段确实看起来合乎逻辑,即使我不认为它的气味仍然存在,您也在使简单的东西变得嘈杂和笨拙。 为了实现 API 和 HTML 的东西,javascript 可能是理想的选择,但是,它可以在没有它的情况下实现,甚至可以在一般的 MVC 控制器上实现。 除此之外,我认为您的模型设计也是不必要的,因为我们只需要一个插件列表和汽车详细信息,除了不清楚您为什么使用该关系设计之外。 让我们开始行动,我们如何以更简洁的方式完成您的场景: 使用 MVC 控制器: 型号: 如前所述,我需要的只是汽车 mdoel 和插件。因此,我将所有这些修改为 CarFormViewModel。 public class Addon { public int Id { get; set; } public string? CheckboxName { get; set; } public bool IsChecked { get; set; } } public class CarFormViewModel { public int Id { get; set; } public string? CarModel { get; set; } public List<Addon>? Addons { get; set; } } 控制器: public IActionResult LoadView() { var addonsList = new List<Addon>() { new Addon() { Id=1,CheckboxName="10% off First service visit", IsChecked = false }, new Addon() { Id=2,CheckboxName="10% off Waterwash", IsChecked = false }, new Addon() { Id=3,CheckboxName="Free AC Inspection", IsChecked = false }, }; var model = new CarFormViewModel(); model.Addons = addonsList; return View(model); } 景色: @model DotNetCoreTestApp.Models.CarFormViewModel @{ ViewData["Title"] = "Car Addons Check Box List"; } <form asp-action="SubmitCarAddonSelectedValue" asp-controller="Home" method="post"> <table class="table table-striped table-bordered mr-3 ml-3"> <tr> <th> <label asp-for="CarModel"></label></th> <td> <input asp-for="CarModel" class="form-control" placeholder="Enter Car Model" /><span asp-validation-for="CarModel"></span></td> </tr> <tr> <th>Addons:</th> <th> @for (int i = 0; i < Model.Addons?.Count; i++) { <label>@Model.Addons[i].CheckboxName</label> <input asp-for="@Model.Addons[i].IsChecked" /> <input type="hidden" asp-for="@Model.Addons[i].Id" /> <input type="hidden" asp-for="@Model.Addons[i].CheckboxName" /> } </th> </tr> </table> <button type="submit" class="btn btn-primary">Submit</button> </form> 提交后操作: [HttpPost] public IActionResult SubmitCarAddonSelectedValue(CarFormViewModel carFormViewModel) { if (!ModelState.IsValid) { return BadRequest(ModelState); } var selectedAddonsValueFromView = carFormViewModel.Addons?.Where(selectedAddons => selectedAddons.IsChecked == true).ToList(); //Insert your addons in database return Ok(selectedAddonsValueFromView); } 输出: 使用 API 控制器: 景色: 在视图中只需要改变这种格式的 API 路由 URL [email protected]("SubmitForm","CarServiceForm") 如下: @model DotNetCoreTestApp.Data.CarFormViewModel @{ ViewData["Title"] = "Combatant Check Box List"; } <form id="SubmitForm" method="post" [email protected]("SubmitForm","CarServiceForm")> <table class="table table-striped table-bordered mr-3 ml-3"> <tr> <th> <label asp-for="CarModel"></label></th> <td> <input asp-for="CarModel" class="form-control" placeholder="Enter Car Model" /><span asp-validation-for="CarModel"></span></td> </tr> <tr> <th>Addons:</th> <th> @for (int i = 0; i < Model.Addons?.Count; i++) { <label>@Model.Addons[i].CheckboxName</label> <input asp-for="@Model.Addons[i].IsChecked" /> <input type="hidden" asp-for="@Model.Addons[i].Id" /> <input type="hidden" asp-for="@Model.Addons[i].CheckboxName" /> } </th> </tr> </table> <button type="submit" class="btn btn-primary">Submit</button> </form> API控制器: [HttpPost("SubmitForm")] public IActionResult SubmitForm([FromForm] CarFormViewModel carFormViewModel) { if (!ModelState.IsValid) { return BadRequest(ModelState); } //Get Car Details var carDetails = carFormViewModel.CarModel; //Get Addons Details var selectedAddonsValueFromView = carFormViewModel.Addons?.Where(selectedAddons => selectedAddons.IsChecked == true).ToList(); //Do whatever you want to do in database return Ok(carFormViewModel); } 输出: 注意:如果您想知道如何实现使用javascript您可以在这里查看我们的官方文档
Entity Framework 在一对一(可选/必需)关系中生成第二个左连接
我在 EF Code First 中有以下模型: 公开课A { 公共 int Id { 得到;放; } 公共虚拟 B { 得到;放; } } 公共B类 { 公共 int Id { 得到;放; } 公共诉...
使用 EntityTypeConfiguration 时的抽象领域模型基类<T>
获取 Base 对象属性的中心映射有什么技巧吗? 使用 EntityTypeConfiguration 时是否有抽象类的一些简单模式。 非常感谢任何提示。 我不能...
我到处都看到大多数人在使用 SingleOrDefault 时遇到此错误。但是,我正在使用 FirstOrDefault。有没有人见过这个异常?我正在使用 Repository Patte ...