实体框架 - 在更新时保存子实体

2024-02-03

我有一个发票实体,它有子发票日志实体。当我第一次创建发票并添加其 InvoiceLog 实体并保存时,它工作正常。但是,如果我随后编辑发票并尝试添加其他 InvoiceLog 实体,它会完全忽略新的 InvoiceLog 实体并且根本不保存它们。有什么想法我做错了吗?

//POST: /Secure/Invoices/Save/
        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Save(Invoice invoice)
        {
            invoice.UpdateDate = DateTime.Now;
            invoice.DeveloperID = Developer.DeveloperID;
            invoice.InvoiceStatusID = (int)Enums.InvoiceStatus.Open;
            if (invoice.InvoiceID == 0)
            {//inserting new invoice.
                DataContext.InvoiceData.Insert(invoice);
            }
            else
            {//attaching existing invoice.
                DataContext.InvoiceData.Attach(invoice);
            }
            AddHours(invoice);
            //save changes.
            DataContext.SaveChanges();
            //redirect to invoice list.
            return RedirectToAction("Index");
        }

        private void AddHours(Invoice invoice)
        {
            //get existing logs.
            IQueryable<InvoiceLog> existingLogs = null;
            if(invoice.InvoiceID > 0)
            {
                existingLogs = DataContext.InvoiceData.GetLogs(invoice.InvoiceID);
            }
            //create new logs.
            var numDays = invoice.EndDate.Subtract(invoice.StartDate).TotalDays;
            for (int k = 0; k <= numDays; k++)
            {
                //check if log already exists.
                var existingLog = existingLogs.ToList().FindIndex(l => l.LogDate == invoice.StartDate.AddDays(k));
                if (existingLog == -1)
                {
                    //add new log.
                    var log = new InvoiceLog();
                    log.CreateDate = DateTime.Now;
                    log.UpdateDate = DateTime.Now;
                    log.Hours = 0;
                    log.InvoiceID = invoice.InvoiceID;
                    log.LogDate = invoice.StartDate.AddDays(k);
                    invoice.InvoiceLogs.Add(log);
                }
            }
        }

谢谢, 贾斯汀


您可以尝试添加InvoiceLogs附加之前的项目invoice:

    else
    {//attaching existing invoice.
        AddHours(invoice);
        DataContext.InvoiceData.Attach(invoice);
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实体框架 - 在更新时保存子实体 的相关文章

  • 静态构造函数中的 Database.SetInitializer() ?

    许多人可能知道为什么我们需要使用下面所示的代码 但是 我想将此逻辑分成几层 并且不想在 Web 层中引用实体框架 DLL 因此我最终将此代码放入我的静态构造函数中DbContext class 这是一个坏主意吗 这样做会对应用程序的性能造成
  • 实体框架代码首次日期字段创建

    我正在使用实体框架代码优先方法来创建我的数据库表 下面的代码 创建一个DATETIME数据库中的列 但我想创建一个DATE柱子 DataType DataType Date DisplayFormatAttribute ApplyForma
  • 为什么没有主键的表是一个坏主意?

    我对数据建模非常陌生 根据微软的实体框架 不允许使用没有主键的表 这显然是一个坏主意 我试图找出为什么这是一个坏主意 以及如何修复我的模型 这样我就不会出现这个漏洞 我当前的模型中有 4 个表 User City HelloCity 和 R
  • 传递选择器函数时,OrderBy 不会转换为 SQL

    当我执行时 var t db Table1 OrderBy x gt x Name ToList 在 SQL 分析器中 这是翻译后的 SQL SELECT Extent1 ID AS ID Extent1 Name AS Name FROM
  • 有没有办法将所有内容都包含在 dbcontext 中?

    当查询一个DbContext急切加载时 需要Include Navigation 为了填充导航属性 然而 在某些情况下 我想简单地Include all实体的导航属性 有没有办法做到这一点 或者有办法做到这一点 我假设你可以反思 但我宁愿避
  • 如何使用 Entity Framework Core 保存字符串列表?

    假设我们有一个如下所示的类 public class Entity public IList
  • 配置多个数据库Entity Framework 6

    在我的解决方案中 我有 2 个使用 Entity Framework 6 的项目 每个项目都指向不同的数据库 都使用相同的数据提供 SQL Server 我的解决方案中的第三个项目需要使用这两个数据库 我的问题是如何配置这些上下文 我尝试在
  • Entity Framework 6 Code First 迁移 - 用于生产的多个分支

    在我的项目中 我们有一个分支模型 它有一个单独的开发分支 并且每个版本都有一个单独的分支 它可能看起来像这样 dev master r1 r2 因此 我们在 dev 上开发并将其合并到 master 然后创建一个发布分支 r1 r2 我们想
  • EF 5.0 中的链接 OR 条件

    我将以此为序言 我正在积极寻找这个问题的解决方案 但我想 如果堆栈上有人已经解决了这个问题 我可能会缩短一些研究和开发时间 我在网上没有找到任何东西 所以这里是 我们正在构建的应用程序框架中有一个案例 我们需要能够接受一组谓词 List
  • EF Core - 可能会导致循环或多个级联路径

    我已经设置了一个我认为非常简单的数据库 但是我收到以下错误 在表 User 上引入 FOREIGN KEY 约束 FK User Suburb SuburbId 可能会导致循环或多个级联路径 指定 ON DELETE NO ACTION 或
  • 如何创建实体集或模型而不在数据库中创建相应的表 - 实体框架

    我的 sqlserver 数据库中有一个存储过程 它返回多个结果集 我正在使用 msdn 中的以下链接从实体框架中的 SP 读取多个结果集 https msdn microsoft com en us library jj691402 v
  • 实体框架在多对多更新场景中附加问题

    我有一个场景 我希望更新电影实体及其与流派的多对多关系 导航属性Genres电影中包含存根Genre只包含的对象GenreID因为我想节省查询所有流派的数据库 请参阅下面的代码 其相当不言自明 问题是我需要将 存根 流派附加到上下文 以便
  • 在 Silverlight 中使用 RIA 服务时如何扩展实体?

    在我的 Silverlight 解决方案的服务器端 我有 2 个项目 提供 Silverlight 页面的网站 实体框架数据访问层 我有一个具有 FirstName 和 LastName 属性的实体 我想添加一个可从 Silverlight
  • 实体框架中的分页

    在实体框架中 使用 LINQ to Entities 数据库分页通常按以下方式完成 int totalRecords EntityContext Context UserSet Count var list EntityContext Co
  • EntityFramework 6.0.0.0 读取数据,但不插入

    我创建了一个基于服务的数据库 folderName gt Add New Item gt Data gt Service based Database文件到 WPF 应用程序中 然后我用过Database First方法并创建了Person
  • 实体创建无用的 id 字段

    我有一个CrudRepository与两个实体 Problem 特征实体总是创建一个附加的id数据库中的字段但未选择正确的characteristic id要生成的字段JSON machine entity machine id name
  • EF 5.0 枚举未生成

    背景我在安装了 Net 4 5 的机器上使用 VS 2010 我读到这是就地安装 覆盖了 net 4 0 版本 我的项目仍然针对 4 0 而 4 5 选项不可用 但被告知没关系 因为 4 5 是就地安装 然后 我通过 nuget 安装了 E
  • 数据库优先方法和修改数据库模式

    我正在使用数据库优先方法使用实体框架 DbContext 构建 ASP NET MVC Web 应用程序 如果在某些情况下我需要修改数据库 例如添加新表或修改现有表 添加列或更改列数据类型 我应该 删除现有实体 edmx 和 tt 文件夹并
  • 同一数据库的多个实体框架

    我们可以在项目中为同一个数据库创建多个实体框架吗 我想为每个子系统创建实体框架 一些子系统具有共享表 这是可能的 您可以根据需要创建多个 EDMX 文件 但不建议这样做 因为 您不能查询不同模型中的多个表 定义边界将非常困难 因为大多数表都
  • 实体框架:在运行时更改连接字符串

    假设有一个 ASP NET MVC 应用程序使用 Entity Framework 6 和代码优先方法以及 StructureMap 作为 IoC 它还使用工作单元模式 域类 public class Product public int

随机推荐

  • 尝试读取在 Python 中创建的对象并传递到 C++ 端的 std::vector 然后返回到 Python 时出现访问冲突

    在 Windows 10 上使用 VS 2019 Python 3 7 64 位和 pybind11 2 4 3 时 我遇到了以下问题 当我使用 pybind11 创建对象时py class 在 Python 端并将其直接传递给 C 端的方
  • 使用 Jackson 将 json 转换为对象

    我必须使用 jackson 将 json 转换为对象 类是这样的 class Country int a int b 我得到的 json 是 country a 1 b 1 但是当我尝试反序列化它时 它给了我以下错误 org codehau
  • 如何获取使用 FileSystemWatcher 创建的新文件的名称?

    我正在使用 FileSystemWatcher 监视文件夹 如果我将文件下载到那里 如何获取该下载文件的名称 例如 如果我下载了一个名为 TextFile txt 的文件 我将如何让它以字符串形式返回该文件 我假设这适用于所有四个触发器 更
  • 将颜色属性从 xaml 绑定到 c#

    我正在尝试将自制控件的属性从我的视图绑定到我的视图模型 当我将颜色直接绑定到 xaml 中的另一个元素时 它可以工作 但是当我尝试将它绑定到我的视图模型中的属性时 财产没有变化 xaml
  • 我们如何反转十六进制颜色代码?

    我的 Web API 将发送我的视图的背景颜色 背景颜色范围从白色开始 ffffff变黑 000000 所以我无法为我的信息文本设置任何固定文本颜色 设置文本颜色的最佳方法是什么 我正在考虑反转背景颜色并将其设置为我的文本颜色 但我不知道如
  • 如何复制带有子文件夹的文件夹? [复制]

    这个问题在这里已经有答案了 该脚本在 PowerShell 中完美运行 它复制具有特定类型的所有文件 但我想用它的文件夹和子文件夹复制文件 dest C example files Get ChildItem Path C example
  • 如何在参数化测试中测试异常?

    在 JUnit4 中 您可以通过在一个方法中提供参数集合来编写参数化单元测试 这些参数集合将传递给测试的构造函数并在另一种方法中进行测试 如果我有一个参数希望抛出异常 我该如何指定它 这就是我如何使用带有预期异常的 junit 参数化测试
  • 在 Eclipse 中更改字体大小的键盘快捷键?

    通过首选项更改 Eclipse 中的字体大小相对简单 并在本论坛中回答过多次 However I d like to change font size quickly e g with Ctrl and Ctrl like in Linux
  • 为什么在编译依赖于 .NET Standard 的 .NET Framework 项目时缺少此 NuGet 依赖项?

    我有一个 Visual Studio 解决方案 有 3 个项目 顶层是 NET Framework 4 6 1 控制台应用程序 项目 A 它依赖于 NET Framework 4 6 1 类库 项目 B 项目 B 依赖于 NET Stand
  • 一次在文件系统上执行多个操作的正确方法是什么?

    假设我想知道一个文件是否存在 如果它是一个目录 则另外检索它的内容 我可能会这样走 browseSimple FilePath gt IO Either FilePath FilePath browseSimple x do isAvail
  • Apache 与 Angular2 - 404 未找到

    我已经使用 Bitnami 映像在 AWS 服务器上部署了 Angular2 应用程序 该应用程序由 Apache 提供服务 在端口 8080 上配置了虚拟主机 只要我从index html 如果我想访问不同的页面 已在RouteConfi
  • 检测 Windows 和 Linux 上的操作系统和 Java

    我有一个基于 Maven 的 JavaFX 项目 我想在 Windows 和 Linux 上构建 Maven 项目 为了在部署捆绑包时自动化该过程 我想自动检测操作系统 在 Windows 中我有这样的配置
  • 计算过滤列中有多少个不同值(或获取不同值列表)

    有没有办法计算一个数组中不同值的数量filteredExcel 中的列 使用公式https exceljet net formula count unique values in a range with countif https exc
  • 如何从异步方法获取button_ClickEvent中的字符串

    我的朋友们 我有以下代码 public static CookieContainer cookies public static HttpWebRequest GetNewRequest string targetUrl CookieCon
  • Python:使 eval 安全[重复]

    这个问题在这里已经有答案了 我想要一种简单的方法来在 Python 中执行 计算器 API 现在我不太关心计算器将支持的确切功能集 我希望它接收一个字符串 比如说 1 1 并返回一个带有结果的字符串 在我们的例子中 2 有没有办法制作eva
  • Minishift:无法解析:*.192.168.64.2.nip.io

    我已经安装了微移在 OSX 上使用brew brew cask install minishift beta minishift version Minishift version 1 0 0 我已经成功启动了 minishift 并创建了
  • 从 Java 调用 PHP [重复]

    这个问题在这里已经有答案了 可能的重复 从java调用php方法 https stackoverflow com questions 614894 invoking a php method from java 我正在编写一个Java 类
  • 复杂数据的曲线拟合

    我想用共享相同参数的两个函数来拟合复杂的数据集 为此我使用了 def funcReal x a b c d return np real a 1j b np exp 1j k x kappa1 x np exp kappa2 x c 1j
  • python 映射函数迭代

    results 是一个嵌套列表 如下所示 gt gt gt results 1 2 3 a b 1 2 3 c d 4 5 6 a b 4 5 6 c d pr 是一个函数 其定义如下 gt gt gt def pr line print
  • 实体框架 - 在更新时保存子实体

    我有一个发票实体 它有子发票日志实体 当我第一次创建发票并添加其 InvoiceLog 实体并保存时 它工作正常 但是 如果我随后编辑发票并尝试添加其他 InvoiceLog 实体 它会完全忽略新的 InvoiceLog 实体并且根本不保存