繁体   English   中英

使用上下文插入数据库不起作用

[英]insert into database using context doesn't work

我正在尝试在表中插入值。 我这样做如下:

JobTable jobTable = new JobTable();
        int result = -1;

        JobEntities context = new JobEntities();
        try
        {
            jobTable.JobDate = DateTime.Now;
            jobTable.JobProcess = processName;

            context.JobTable.Attach(jobTable);
            context.JobTable.Add(jobTable);

            result = context.SaveChanges();
            Console.WriteLine("Result => " + result.ToString());
        }
        catch (Exception)
        {
            throw;
        }

        return jobTable.JobId;

我每次都得到一个新的JobId,但是当我检查我的数据库时,该表保持空白。 我错过了什么?

一些事情,

首先,attach通常用于告诉EF将已存在于数据库中的实体连接到上下文。 您可以将此用于添加,但您需要手动告知EF使用状态管理器添加此实体。 这不是你想要做的。

添加是将行插入数据库的常规方法,这实际上也是将该实体添加到EFs上下文中。

您应该在上下文周围使用using块以确保正确处理。 这一点尤为重要,因为EF会保留所有实体的副本以跟踪已更改的内容,因此不处理上下文可能会导致严重的内存泄漏。

以下是我认为您的代码应如下所示:

JobTable jobTable = new JobTable();

using(var context = new JobEntities())
{
    jobTable.JobDate = DateTime.Now;
    jobTable.JobProcess = processName;

    context.JobTable.Add(jobTable);

    var result = context.SaveChanges();
    Console.WriteLine("Result => " + result.ToString());

    return jobTable.JobId;
}

如果这仍然无法工作,我建议你查看你的连接字符串并确认它实际上是你想要的数据库,也许它在其他地方创建了自己的数据库

使用app来查询表并查看是否存在行也是值得的,如果它设置了一个ID,这意味着它实际上已经获得了SQL,因为ID通常是由数据库生成的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM