我正在尝试创建一个.net核心Web API,但是我找不到解决问题的方法。
完整错误
[ERR]在迭代上下文类型“MailAlertWebApiWithEF.Data.AlertContext”'的查询结果时,数据库发生异常。 “”System.ArgumentException:初始化字符串的格式不符合从索引0开始的规范。
我使用
从现有数据库中获取配置代码Scaffold-DbContext“server = .; ConnectionString”Microsoft.EntityFrameworkCore.SqlServer -OutputDir DBModels -force -v
我的配置是:
public class AlertModelConfiguration<T>:BaseEntityModelConfiguration<T,int> where T:Alert
{
public AlertModelConfiguration(ref ModelBuilder modelBuilder):base(ref modelBuilder)
{
modelBuilder.Entity<Alert>(entity =>
{
//entity.HasKey(e => e.AlertId);
entity.Property(e => e.CreateDate).HasColumnType("datetime");
entity.Property(e => e.DeleteDate).HasColumnType("datetime");
entity.Property(e => e.Detail)
.IsRequired()
.HasMaxLength(2046)
.IsUnicode(false);
entity.Property(e => e.ErrorDetail)
.IsRequired()
.HasMaxLength(255)
.IsUnicode(false);
entity.Property(e => e.Title)
.HasMaxLength(50)
.IsUnicode(false);
entity.Property(e => e.UpdateDate).HasColumnType("datetime");
});
}
}
我的背景是:
public class AlertContext:DbContext
{
public AlertContext(DbContextOptions<AlertContext> options)
: base(options)
{
}
public virtual DbSet<Alert> Users { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
new AlertModelConfiguration<Alert>(ref modelBuilder);
base.OnModelCreating(modelBuilder);
}
}
我在appsettingss.json里面的ConnectionStrings:
ConnectionStrings": {
"AlertContext": "server=.;database=*****;poling=false;Connect
Timeout=60;Integrated Security=SSPI"
当ı以调试模式启动时,API卡在引擎层内。
My Engine和IEngine:
Task<CustomListEntity<Alert>> GetByIdAsync(int id);
public Task<CustomListEntity<Alert>> GetByIdAsync(int id)
{
return CommonOperationAsync(async () =>
{
var predicate = PredicateBuilder.True<Alert>();
predicate = predicate.And(p => p.Id == id);
return new CustomListEntity<Alert>()
{
EntityList = await _alertReqository.GetAll(skip: 0, take: 10, predicate: predicate,
orderExpression: null, rowCount: out var count, ascending: false).ToListAsync(),
Count = count,
};
}, new BusinessBaseRequest()
{
MethodBase = MethodBase.GetCurrentMethod()
}, BusinessUtilMethod.CheckRecordIsExist, GetType().Name);
}
我尝试了自己的配置文件但结果是一样的。请帮忙出错?
答案 0 :(得分:3)
此错误表示您的连接字符串不正确。
“pooling”一词中有拼写错误,请尝试使用以下连接字符串:
ConnectionStrings": {
"AlertContext": "server=.;database=*****;pooling=false;
Timeout=60;Integrated Security=SSPI"
如果仍然无法正常工作,请确保服务器和数据库值正常。
答案 1 :(得分:0)
我也遇到了同样的错误,但是问题不在于连接字符串,而是由于如下所示的一些困惑:
在Startup.cs文件中,我添加了以下错误的设置:
services.AddDbContext<EFCFWithExistingDBContext>(x => x.UseSqlServer(MyDatabaseConnection));
下面是正确的代码。我的错误消失了。
services.AddDbContext<EFCFWithExistingDBContext>(x => x.UseSqlServer(Configuration.GetConnectionString("MyDatabaseConnection")));