You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core项目数据保存时连接字符串登录异常问题

问题:非M1 Mac上.NET Core应用无法连接Docker中的SQL Server保存数据

我是老款非M1芯片Mac用户,拥有一个.NET Core应用,已通过Docker拉取SQL Server镜像,同时使用Azure Data Studio。在Azure Data Studio中,用完全相同的信息可以正常登录数据库,但从应用保存数据时遇到登录问题。已成功添加迁移并更新数据库,试过更换密码、使用不同镜像、重新部署Docker、更换EF版本等方法,问题仍未解决。

Docker运行命令

docker run -e "ACCEPT_EULA=1" -e "MSSQL_SA_PASSWORD=SimplePassword123" -e "MSSQL_PID=Developer" -p 1433:1433 -d --name=sql mcr.microsoft.com/azure-sql-edge

EF Core 8连接字符串配置

builder
    .Services
    .AddDbContext<ApplicationDbContext>(o => 
        o.UseSqlServer( "Server=localhost,1433;Database=LostPawsDb;User Id=sa;Password=SimplePassword123;TrustServerCertificate=True;"));

builder.Services.AddTransient<IPetRepository, PetRepository>();
builder.Services.AddTransient<IPetService, PetService.Logic.PetService>();

避免设计时异常的代码

ApplicationDbContextFactory

using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Design;
using Microsoft.Extensions.Configuration;

namespace PetService.Database;

public class ApplicationDbContextFactory : IDesignTimeDbContextFactory<ApplicationDbContext>
{
    public ApplicationDbContext CreateDbContext(string[] args)
    {
        var optionsBuilder = new DbContextOptionsBuilder<ApplicationDbContext>();

        optionsBuilder.UseSqlServer( "Server=localhost,1433;Database=LostPawsDb;User Id=sa;Password=SimplePassword123;TrustServerCertificate=True;");

        return new ApplicationDbContext(optionsBuilder.Options);
    }
}

ApplicationDbContext

using Microsoft.EntityFrameworkCore;
using PetService.Database.Entities;

namespace PetService.Database;

public class ApplicationDbContext :  DbContext
{
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
    { }

    public DbSet<PetEntity> Pet { get; set; }
    public DbSet<IllnessEntity> Illness { get; set; }
    public DbSet<PetMediaEntity> PetMedia { get; set; }
    
    public DbSet<LocationEntity> Location { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        if (modelBuilder == null)
        {
            throw new ArgumentNullException(nameof(modelBuilder));
        }

        modelBuilder.Entity<PetEntity>().ToTable(nameof(Pet));
        modelBuilder.Entity<IllnessEntity>().ToTable(nameof(Illness));
        modelBuilder.Entity<PetMediaEntity>().ToTable(nameof(PetMedia));
        modelBuilder.Entity<LocationEntity>().ToTable(nameof(Location));
    }
}

内容的提问来源于stack exchange,提问作者denisaemailova

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 13:45:06