AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-16440511

Mehmet's questions

Martin Hope
Mehmet
Asked: 2024-11-09 02:39:39 +0800 CST

.Net Blazor id MERGE语句与FOREIGN KEY约束冲突问题

  • 6

我正在做一个项目,我关注的是一位培训师。当我进入更新过程时,我开始收到错误,当我使用断点时,我意识到在保存阶段 QuizId 值变为 0000。当我检查数据库时,我的所有连接都是正确的,id 值也可用,但我的输出有问题。

问题.cs

[Key]
public Guid Id { get; set; }
public string Text { get; set; }

public Guid QuizId { get; set; }
[ForeignKey(nameof(QuizId))]
public virtual Quiz Quiz { get; set; }

public virtual ICollection<Options> Options { get; set; } = [];

选项.cs

[Key]
public int Id { get; set; }

public string Text { get; set; }
public bool IsCorrect { get; set; }
public Guid QuestionId { get; set; }

[ForeignKey(nameof(QuestionId))]
public virtual Questions Questions { get; set; }

测验.cs

  [Key]
  public Guid Id { get; set; }
  public string? Name { get; set; }
  public int TotalQuestions { get; set; }
  public int TimeInMinutes { get; set; }
  public bool IsActive { get; set; }

  public Guid CategoryId { get; set; }
  [ForeignKey(nameof(CategoryId))]
  public virtual Category? Category { get; set; }

  public ICollection<Questions> Questions { get; set; } = [];

下面是我用来保存数据的代码块

public async Task<QuizApiResponse> SaveQuizAsync(QuizSaveDto dto)
{
    var questions = dto.Question.Select(q => new Questions
    {
        Id = Guid.NewGuid(),
        Text = q.Text,
        Options = q.Option.Select(o => new Options
        {
            Id = 0,
            Text = o.Text,
            IsCorrect = o.IsCorrect
        }).ToArray()
    }).ToArray();

    if (dto.Id == Guid.Empty)
    {

        var quiz = new Quiz
        {
            Id = Guid.NewGuid(),
            Name = dto.Name,
            CategoryId = dto.CategoryId,
            TotalQuestions = dto.TotalQuestions,
            TimeInMinutes = dto.TimeInMinutes,
            IsActive = dto.IsActive,
            Questions = questions
        };
        _context.Quizzes.Add(quiz);
    }
    else
    {
        var dbQuiz = await _context.Quizzes.FirstOrDefaultAsync(q => q.Id == dto.Id);//QuizId have
        if (dbQuiz == null)
        {
            return QuizApiResponse.Fail("Quiz doesn't exists");
        }
        dbQuiz.CategoryId = dto.CategoryId;
        dbQuiz.IsActive = dto.IsActive;
        dbQuiz.Name = dto.Name;
        dbQuiz.TimeInMinutes = dto.TimeInMinutes;
        dbQuiz.TotalQuestions = dto.TotalQuestions;
        dbQuiz.Questions = questions;//QuizId is 0000

        _context.Quizzes.Update(dbQuiz);// burada QuizId null
    }

    try
    {
        await _context.SaveChangesAsync();
        return QuizApiResponse.Success();
    }
    catch (Exception ex)
    {
        return QuizApiResponse.Fail(ex.Message);
    }
}

这是我的数据库架构的示意图数据库

当我使用断点继续时检测到的点 在此处输入图片描述

我得到的错误如下

Microsoft.EntityFrameworkCore.Update[10000] 保存上下文类型“BlazingQuiz.Api.Data.Repositories.QuizContext”的更改时,数据库中发生异常。Microsoft.EntityFrameworkCore.DbUpdateException:保存实体更改时发生错误。有关详细信息,请参阅内部异常。---> Microsoft.Data.SqlClient.SqlException (0x80131904):MERGE 语句与 FOREIGN KEY 约束“FK_Options_Questions_QuestionId”冲突。冲突发生在数据库“BlazingQuiz”、表“dbo.Questions”、列“Id”中。在 Microsoft.Data.SqlClient.SqlConnection.OnError(SqlException 异常,布尔 breakConnection,Action 1 wrapCloseInAction) at Microsoft.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction)在 Microsoft.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj,布尔 callerHasConnectionLock,布尔 asyncClose)

sql
  • 1 个回答
  • 37 Views
Martin Hope
Mehmet
Asked: 2024-01-03 21:51:31 +0800 CST

上传图像文件时,我没有收到代码错误,但收到了我自己设置的所需错误,我在哪里做错了?

  • 5

当我想保存图像时,遇到问题,我在模型中强制出现了错误,但是在应用程序运行时我没有收到任何错误行,当我使用断点时,我看到图像出现了模型有效,但有效返回错误,但我找不到解决方案,你能帮忙吗?

我在“创建”页面上获取图像数据的字段

<div class="form-group my-3">
    <label asp-for="UniversityImage"></label>
    <input name="file" type="file" class="form-control" />
</div>

我的管理仪表板

 [HttpPost]
 [ValidateAntiForgeryToken]
 public async Task<IActionResult> Create([FromForm] UniversityDtoForInsertion universityDto, IFormFile file)
 {
     if (ModelState.IsValid)
     {
         string path = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "images", file.FileName);

         await using (var stream = new FileStream(path, FileMode.Create))
         {
             await file.CopyToAsync(stream);
         }
         universityDto.UniversityImage = String.Concat("/images/", file.FileName);
         _serviceManager.UniversityService.CreateUniversity(universityDto);
         TempData["success"] = $"{universityDto.UniversityName} has been created.";
         return RedirectToAction("Index");
     }
     return View();

 }

数据传输对象

public record UniversityDto
{
    public int UniversityId { get; init; }

    [Required(ErrorMessage = "UniversityName is Required")]
    public string UniversityName { get; init; }

    [Required(ErrorMessage = "UniversityDescription is Required")]
    public string UniversityDescription { get; init; }

    [Required(ErrorMessage = "UniversityAddress is Required")]
    public string UniversityAddress { get; init; }

    [Required(ErrorMessage = "UniversityWebAddress is Required")]
    public string UniversityWebAddress { get; init; }

    [Required(ErrorMessage = "UniversityPhone is Required")]
    public string UniversityPhone { get; init; }

    [Required(ErrorMessage = "UniversityImage is Required")]
    public string UniversityImage { get; set; }

}

IUniversity服务层

University CreateUniversity(UniversityDtoForInsertion universityDto);

大学管理者层

 public University CreateUniversity(UniversityDtoForInsertion universityDto)
 {
     if (universityDto is null)
     {
         throw new ArgumentNullException(nameof(universityDto));
     }

     University university = _mapper.Map<University>(universityDto);

     _manager.University.Create(university);
     _manager.Save();
     return university;
 }

IUniversityRepository层

 public interface IUniversityRepository : IRepositoryBase<University>
 {
     IQueryable<University> GetAllUniversities(bool trackChanges);
     University? GetOneUniversity(int id, bool trackChanges);

     void CreateOneUni(University university);
     void UpdateOneUni(University university);
     void DeleteOneUni(University university);
 }

大学存储库层

 public void CreateOneUni(University university) => Create(university);

当我继续使用断点时,显示问题的点如下图所示,您能帮忙吗? 在此输入图像描述

asp.net-mvc
  • 1 个回答
  • 41 Views
Martin Hope
Mehmet
Asked: 2023-09-08 23:50:39 +0800 CST

ASP .NET 无法解析类型的服务

  • 7

我正在跟随一个Instructor,一开始一切都很顺利,但是当我将项目发布到github后,项目的文件发生了变化,我认为我做错了什么,后来我编辑了内容。但有一点我错过了,我认为我无法建立数据库连接(或者我误解了它)我也尝试了有关此主题的页面上的解决方案,但它不起作用。请你帮助我好吗?

我得到的错误如下

System.AggregateException: 'Some services are not able to be constructed (Error while validating the service descriptor 'ServiceType: Repositories.RepositoryContext Lifetime: Scoped ImplementationType: Repositories.RepositoryContext': Unable to resolve service for type 'Microsoft.EntityFrameworkCore.DbSet1[Entities.Models.Product]' 尝试激活 'Repositories.RepositoryContext' 时。)(验证服务描述符 'ServiceType: Repositories.Contracts.IRepositoryManager Lifetime: Scoped ImplementType: Repositories.RepositoryManager' 时出错:无法解析服务1[Entities.Models.Product]' while attempting to activate 'Repositories.RepositoryContext'.) (Error while validating the service descriptor 'ServiceType: Repositories.Contracts.IProductRepository Lifetime: Scoped ImplementationType: Repositories.ProductRepository': Unable to resolve service for type 'Microsoft.EntityFrameworkCore.DbSet尝试激活“Repositories.RepositoryContext”时键入“Microsoft.EntityFrameworkCore.DbSet 1[Entities.Models.Product]”。)

InvalidOperationException: Unable to resolve service for type 'Microsoft.EntityFrameworkCore.DbSet1[Entities.Models.Product]',同时尝试激活“Repositories.RepositoryContext”。`

我一一检查了我的存储库层,一一检查了我的 Program.cs 链接,我检查了微软网站上的说明,但我想我无法以我目前的知识水平解决这个问题。

我的存储库上下文页面如下所示

public class RepositoryContext : DbContext
{
    public DbSet<Product> Products { get; set; } 
    public DbSet<Category> Categories { get; set; } 


    public RepositoryContext(DbContextOptions<RepositoryContext> options, DbSet<Product> products, DbSet<Category> categories) :
        base(options) 
    {
       
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder); 
        modelBuilder.Entity<Product>()
            .HasData(new Product() { Id = 1, ProductName = "Laptop", Price = 1000 },
                new Product() { Id = 2, ProductName = "Keyboard", Price = 500 },
                new Product() { Id = 3, ProductName = "Computer", Price = 2500 },
                new Product() { Id = 4, ProductName = "Monitor", Price = 1000 },
                new Product() { Id = 5, ProductName = "Deck", Price = 500 }
            ); 
        modelBuilder.Entity<Category>()
            .HasData(
                new Category() { CategoryId = 1, CategoryName = "Book" },
                new Category() { CategoryId = 2, CategoryName = "Electronic" });
    }
}

这是我在程序开头的代码

var builder = WebApplication.CreateBuilder(args);
builder.Services
    .AddControllersWithViews(); 
builder.Services.AddDbContext<RepositoryContext>(options =>
{
    options.UseSqlite(builder.Configuration.GetConnectionString
        ("sqlconnection"), 
        b => b.MigrationsAssembly("StoreApp")); 
});
builder.Services.AddScoped<IRepositoryManager, RepositoryManager>();
builder.Services.AddScoped<IProductRepository, ProductRepository>();


var app = builder.Build();

app.UseStaticFiles(); 
app.UseHttpsRedirection(); 
app.UseRouting(); 


app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}"); 

app.Run();

物体有这个形状

public class Product
{
    public int Id { get; set; }
    public String? ProductName { get; set; } = String.Empty; 
    public decimal Price { get; set; }
}

    public class Category
    {
        public int CategoryId { get; set; }
        public String? CategoryName { get; set; }= String.Empty;
        
    }
c#
  • 2 个回答
  • 33 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    重新格式化数字,在固定位置插入分隔符

    • 6 个回答
  • Marko Smith

    为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会?

    • 2 个回答
  • Marko Smith

    VScode 自动卸载扩展的问题(Material 主题)

    • 2 个回答
  • Marko Smith

    Vue 3:创建时出错“预期标识符但发现‘导入’”[重复]

    • 1 个回答
  • Marko Smith

    具有指定基础类型但没有枚举器的“枚举类”的用途是什么?

    • 1 个回答
  • Marko Smith

    如何修复未手动导入的模块的 MODULE_NOT_FOUND 错误?

    • 6 个回答
  • Marko Smith

    `(表达式,左值) = 右值` 在 C 或 C++ 中是有效的赋值吗?为什么有些编译器会接受/拒绝它?

    • 3 个回答
  • Marko Smith

    在 C++ 中,一个不执行任何操作的空程序需要 204KB 的堆,但在 C 中则不需要

    • 1 个回答
  • Marko Smith

    PowerBI 目前与 BigQuery 不兼容:Simba 驱动程序与 Windows 更新有关

    • 2 个回答
  • Marko Smith

    AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String”

    • 1 个回答
  • Martin Hope
    Fantastic Mr Fox msvc std::vector 实现中仅不接受可复制类型 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant 使用 chrono 查找下一个工作日 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor 构造函数的成员初始化程序可以包含另一个成员的初始化吗? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský 为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul C++20 是否进行了更改,允许从已知绑定数组“type(&)[N]”转换为未知绑定数组“type(&)[]”? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann 为什么 {2,3,10} 和 {x,3,10} (x=2) 的顺序不同? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller 在 5.2 版中,bash 条件语句中的 [[ .. ]] 中的分号现在是可选的吗? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench 为什么双破折号 (--) 会导致此 MariaDB 子句评估为 true? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng 为什么 `dict(id=1, **{'id': 2})` 有时会引发 `KeyError: 'id'` 而不是 TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String” 2024-03-20 03:12:31 +0800 CST

热门标签

python javascript c++ c# java typescript sql reactjs html

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve