簡體   English   中英

實體框架 - ConnectionString 屬性尚未初始化

[英]Entity Framework - the ConnectionString property has not been initialized

我有以下代碼:

using (AtlasEntities dbContext = new AtlasEntities())
{
    List<SqlParameter> parameters = new List<SqlParameter>();
    parameters.Add(new SqlParameter("today", today));

    var results = dbContext
        .MultipleResults($"EXEC [dbo].[GetPolicyPremiums] @today, parameters)
        .AddResult<PremiumDueReminderEntity>()
        .AddResult<PremiumDueReminderEntity>()
        .AddResult<PremiumDueReminderEntity>()
        .AddResult<PremiumDueReminderEntity>()
        .Execute();
/**/
    Mail mail = new Mail()
                    {
                        IsMailSent = false,
                        ErrorFailureCount = 0,
                        Body = "Body",
                        Subject = "Premium Due Reminder"
                    };
    dbContext.Mails.Add(mail);
    dbContext.SaveChanges();
}

AtlasEntities來自一個名為EntityModel的不同項目,它充當我的數據層,使用 Entity Framework 和 EDMX。

.Execute()工作得很好,我能夠從數據庫中獲得所需的results

但是,當我運行dbContext.SaveChanges()代碼時,我得到以下堆棧跟蹤:

at System.Data.Entity.Core.EntityClient.EntityConnection.Open()
at System.Data.Entity.Core.Objects.ObjectContext.EnsureConnection(Boolean shouldMonitorTransactions)
at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)
at System.Data.Entity.Core.Objects.ObjectContext.SaveChangesToStore(SaveOptions options, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction)
at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass2a.<SaveChangesInternal>b__27()
at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation)
at System.Data.Entity.Core.Objects.ObjectContext.SaveChangesInternal(SaveOptions options, Boolean executeInExistingTransaction)
at System.Data.Entity.Core.Objects.ObjectContext.SaveChanges(SaveOptions options)
at System.Data.Entity.Internal.InternalContext.SaveChanges()
at System.Data.Entity.Internal.LazyInternalContext.SaveChanges()
at System.Data.Entity.DbContext.SaveChanges()
at NotificationApp.PremiumNotificationManager.StartCheck() in C:\Projects\LIVE\NotificationApp\Manager\PremiumNotificationManager.cs:line 71

消息是:

底層提供者在 Open 上失敗

內部異常是:

ConnectionString 屬性尚未初始化

我沒有在這個項目的任何地方使用SqlConnection

兩個項目在各自的App.config文件中都使用了類似的連接字符串:

<connectionStrings>
    <add name="AtlasEntities" 
         connectionString="metadata=res://*/Data.AtlasModel.csdl|res://*/Data.AtlasModel.ssdl|res://*/Data.AtlasModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=NAB-SHARMAB\SQLSERVER2019;initial catalog=Live_DB;persist security info=True;user id=AdminTest;password=PasswordTest;multipleactiveresultsets=True;application name=EntityFramework&quot;" 
          providerName="System.Data.EntityClient" />
</connectionStrings>`

我還沒有發現其他人有這種類型的錯誤,也不知道是什么原因造成的。 請幫忙。

我通過以另一種方法移動保存部分來解決它:

private static void SaveMail(string emailBody)
        {
            using (AtlasEntities dbContext = new AtlasEntities())
            {
                Mail mail = new Mail()
                {
                    IsMailSent = false,
                    ErrorFailureCount = 0,
                    Body = emailBody,
                    Subject = "Premium Due Reminder"
                };
                dbContext.Mails.Add(mail);
                dbContext.SaveChanges();
        }

了解為什么當我創建另一個Context沒有收到此錯誤仍然會很有幫助。 我不確定為什么它現在有效。

聲明並初始化一個空的郵件列表

List<Mail> mails = new List<Mail>();

然后改變

dbContext.Mails.Add(mail);

簡單地

mails.Add(mail);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM