Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架-CommitFailureHandler.ClearTransactionHistory()_C#_Sql Server_Entity Framework_Wcf_Entity Framework 6 - Fatal编程技术网

C# 实体框架-CommitFailureHandler.ClearTransactionHistory()

C# 实体框架-CommitFailureHandler.ClearTransactionHistory(),c#,sql-server,entity-framework,wcf,entity-framework-6,C#,Sql Server,Entity Framework,Wcf,Entity Framework 6,我遇到了一个关于commitFailureHandler.ClearTransactionHistory()的问题方法。当我第一次运行它时,我得到一个异常,它声明'dbo.EFTransactionHistory'无效 InnerException: System.Data.SqlClient.SqlException HResult=-2146232060 Message=Invalid object name 'dbo.EFTransactionHistory'. Source=.Ne

我遇到了一个关于
commitFailureHandler.ClearTransactionHistory()的问题方法。当我第一次运行它时,我得到一个异常,它声明
'dbo.EFTransactionHistory'
无效

InnerException: System.Data.SqlClient.SqlException
 HResult=-2146232060
 Message=Invalid object name 'dbo.EFTransactionHistory'.
 Source=.Net SqlClient Data Provider
 ErrorCode=-2146232060
 Class=16
 LineNumber=1
 Number=208
 Procedure=""
 Server=********
 State=1
我签入了数据库&当然,该表不存在。当然,我们应该在每次应用程序启动时都执行这个方法。在本例中,它是一个WCF服务&我制作了一个定制的服务初始化器,因此每当启动mex或第一个服务调用时,它都会初始化服务所需的一些资源

以下是我在web.config中为我的服务提供的内容:

<entityFramework codeConfigurationType="WSI.Common.DataAccess.Configuration.EntityFramework.TransactionDbConfiguration, WSI.Common.DataAccess">
接下来是我扩展TransactionContext类的代码:

    public class DbTransactionContext : TransactionContext
        {
        public DbTransactionContext(DbConnection dbConnection) : base(dbConnection)
            {

            }

   protected override void OnModelCreating(DbModelBuilder modelBuilder)
       {
       modelBuilder.Entity<TransactionRow>().ToTable("EFTransactionHistory");
       }
   }
当然,如果我删除
commitFailureHandler.ClearTransactionHistory()
&我运行应用程序,在服务运行的正常过程中更新数据库中的任何实体后,它将创建
dbo.EFTransactionHistory
表。然后停止服务,包括
commitFailureHandler.ClearTransactionHistory()方法它将工作

在尝试从表中删除行之前,
ClearTransactionHistory()
应该如何检查表是否存在,或者它触发
OnModelCreating()
方法

我已经为此工作了几天&我很想找到解决这个问题的方法


谢谢

尝试在
初始化方法中添加以下内容:

dbContext.Database.Initialize(true);

这将触发/强制数据库初始化。

我添加了“dbContext.Database.Initialize(true);”在我检查静态Initialize()方法中的dbContext是否为null之后。我还是有同样的问题。现在我应该注意到,我没有采用代码优先的方法……我采用了模型优先的方法来创建数据库,然后从中创建实体。我不知道这是否有区别。我想不会。
protected static void Initialize(DbContext dbContext)
    {
    if (dbContext != null)
        {
        using (CommitFailureHandler commitFailureHandler = CommitFailureHandler.FromContext(dbContext))
            {
            if (commitFailureHandler != null)
                {
                commitFailureHandler.ClearTransactionHistory();
                //commitFailureHandler.PruneTransactionHistory();
                }
            }
         }
     }
dbContext.Database.Initialize(true);