C# 实体框架6即使具有主键也不在表中插入行
我有一个多项目解决方案。在我的EF 6项目Gilbane,RREM.Data中,我有一个EF模型,其中包括一个表TransactionLog。然后,我有一个项目Gilbane.RREM.Logging,其中包括一个函数: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
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_数据文件夹,里面可能有一个文件,你可以在那里找到你的记录
如何解决这个问题:
没有AppData文件夹。通过WCF web服务或控制台应用程序调用它们,两者的结果相同。连接字符串设置为大型SQL Server数据库。它也是从模型生成的。请确保您的配置文件没有从DbContext继承的类的节,传递连接字符串名称。公共类YourContext:DbContext{public YourContext():base(“ConnectionStringName”){}哪个配置文件不应该有该节?