C# 实体框架6即使具有主键也不在表中插入行

C# 实体框架6即使具有主键也不在表中插入行,c#,entity-framework,C#,Entity Framework,我有一个多项目解决方案。在我的EF 6项目Gilbane,RREM.Data中,我有一个EF模型,其中包括一个表TransactionLog。然后,我有一个项目Gilbane.RREM.Logging,其中包括一个函数: public static void RecordTransaction(string appId, string transactionId, DateTime time, string sourceInterface, string sourceSy

我有一个多项目解决方案。在我的EF 6项目Gilbane,RREM.Data中,我有一个EF模型,其中包括一个表TransactionLog。然后,我有一个项目Gilbane.RREM.Logging,其中包括一个函数:

public static void RecordTransaction(string appId, string transactionId, DateTime time, string sourceInterface,
            string sourceSystem, string tranId, string response, int interfaceId)
        {
            using (RREM_GilbaneEntities entities = new RREM_GilbaneEntities())
            {
                try
                {
                    var transactionLog = new TransactionLog
                    {
                        transactionID = transactionId,
                        created = DateTime.Now,
                        sourceInterface = sourceInterface,
                        sourceSystem = sourceSystem,
                        appID = appId,
                        GilbaneTransactionID = tranId,
                        response = response,
                        sourceIP = null,
                        SourceID = interfaceId,
                    };

                    entities.TransactionLogs.Add(transactionLog);
                    entities.SaveChanges();
                }
                catch (Exception ex)
                {
                    LogError(appId, ex.ToString(), "RecordTransaction", transactionId, "", interfaceId, "CommonLibrary");
                }
            }
最后,我有另一个调用RecordTransaction调用的程序集。我一步一步地看ReordTransaction执行,没有错误。它只是没有在TransactionLog表中放入任何内容!这是尽管它有一个声明的主键。有什么想法吗

编辑-EF类库具有从数据库生成的模型:

public partial class RREM_GilbaneEntities : DbContext
    {
        public RREM_GilbaneEntities()
            : base("name=RREM_GilbaneEntities")
        {
        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            throw new UnintentionalCodeFirstException();
        }

        public virtual DbSet<ErrorLog> ErrorLogs { get; set; }
        public virtual DbSet<TransactionLog> TransactionLogs { get; set; }
        public virtual DbSet<transactionController> transactionControllers { get; set; }
        public virtual DbSet<TransactionOutgoingQueue> TransactionOutgoingQueues { get; set; }
        public virtual DbSet<respons> responses { get; set; }
    }
公共部分类RREM\u gilbane实体:DbContext
{
公共RREM_Gilbane实体()
:base(“name=RREM\u gilbane实体”)
{
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
抛出新代码FirstException();
}
公共虚拟数据库集错误日志{get;set;}
公共虚拟数据库集事务日志{get;set;}
公共虚拟数据库集事务控制器{get;set;}
公共虚拟数据库集事务输出队列{get;set;}
公共虚拟数据库集响应{get;set;}
}

如果您没有收到错误,那是因为EF正在存储。这是我的猜测。看看你的App_数据文件夹,里面可能有一个文件,你可以在那里找到你的记录

如何解决这个问题:

  • 确保设置了正确的连接字符串

  • 使用从DbContext类继承的类的相同名称设置连接字符串名称


  • 没有AppData文件夹。通过WCF web服务或控制台应用程序调用它们,两者的结果相同。连接字符串设置为大型SQL Server数据库。它也是从模型生成的。请确保您的配置文件没有从DbContext继承的类的节,传递连接字符串名称。公共类YourContext:DbContext{public YourContext():base(“ConnectionStringName”){}哪个配置文件不应该有该节?