实体框架在更新实体时表示属性为空

2024-01-25

我正在尝试将新实体添加到现有集合中。但是,当这样做时,“父”实体抱怨其他导航属性为空(尽管它们不是)。

Error:

类型异常 发生“System.Data.Entity.Validation.DbEntityValidationException” 在 Ela.Facade.dll 中,但未在用户代码中处理

附加信息:一个或多个实体的验证失败。 有关更多详细信息,请参阅“EntityValidationErrors”属性。

基金状态:修改

错误:需要字段所有者

When debugging the field Owner is loaded correctly: Debug values

基金类别:

public class Fund
{
    public int FundId { get; set; }

    [Required]
    [Index("IDX_FundName", 2, IsUnique = true)]
    [MaxLength(25)]
    public string Name { get; set; }

    [Required]
    [Index("IDX_FundIdentifier", 2, IsUnique = true)]
    [MaxLength(25)]
    public string Identifier { get; set; }

    public double Balance { get; set; }

    [Required]
    [Index("IDX_FundName", 1, IsUnique = true)]
    [Index("IDX_FundIdentifier", 1, IsUnique = true)]
    public virtual ApplicationUser Owner { get; set; }

    public virtual ICollection<Transaction> Transactions { get; set; }

    public Fund()
    {
        Transactions = new List<Transaction>();
    }
}

创建交易方法:

public Transaction CreateTransaction(Transaction newTransaction)
{
    var context = new ApplicationDbContext();
    try
    {
        var fund = context.Funds.FirstOrDefault(f => f.FundId == newTransaction.ToFund.FundId);
        newTransaction.ToFund = fund;
        fund.Transactions.Add(newTransaction);
        context.SaveChanges();
    }
    catch (DbEntityValidationException e)
    {
        foreach (var eve in e.EntityValidationErrors)
        {
            Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                eve.Entry.Entity.GetType().Name, eve.Entry.State);
            foreach (var ve in eve.ValidationErrors)
            {
                Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"",
                    ve.PropertyName, ve.ErrorMessage);
            }
        }
        throw;
    }
    return context.Transactions.FirstOrDefault();
}

任何帮助或建议表示赞赏!


当您查找基金时,如果它们是虚拟的,它不会填充外键属性。为了让它们被拉出来,你必须包含该属性;这样做将使您获得想要的结果。

var fund = 
    context.Funds
           .Include(f => f.Owner)
           .FirstOrDefault(f => f.FundId == newTransaction.ToFund.FundId);

您可以在此处找到有关 EF 如何加载相关实体的更多信息MSDN 文章 https://msdn.microsoft.com/en-us/data/jj574232.aspx

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

实体框架在更新实体时表示属性为空 的相关文章

随机推荐

  • ADODB SQL 语法 - 使用 Excel 工作表访问表内连接

    我有一个项目 用户需要填写 Excel 文件 然后将数据导出到 Access 数据库 Excel文件中收集的数据需要分3步导出 1 导出数据集1条记录 2 查询新导入记录的主键 自动编号 Access 3 导出数据设置 2 记录 其中包括填
  • 尾部斜杠给出内部服务器错误

    我希望我的所有页面都能正常工作 无论用户是否在末尾添加了尾部斜杠 以下行有效 RewriteRule index page 0 9 cmstut index php page 1 QSA L 但以下行会导致内部服务器错误 这是最后一行 该行
  • 对于 TBitmap,FMX 中是否有相当于 FloodFill 的功能?

    我正在从 VCL 转换为 FMX 在VCL中 TBitmap的TCanvas中有一个名为FloodFill的函数 它允许TBitmap的画布充满特定的颜色 直到在位图的画布上达到另一种特定的颜色 FMX 中有与此功能等效的函数吗 根据 RR
  • 如何列出相机可用的视频分辨率

    如果我的电脑上连接了多个摄像头 我想知道特定摄像头的最佳可用分辨率 例如 有些相机是高清或全高清 1 280 720像素 720p 或1920x1080像素 1080i 1080p 或者最常见的是网络相机 我想至少知道相机正常工作的最佳视频
  • Sitecore 页面编辑器 发布与内容相关的项目

    我有一个 产品页面 产品页面映射到 ProductPage Sitecore 项目 网站 页面 产品页面 我在该页面中有一个带有页面编辑器的文本区域 该区域从 Web 数据库中的 产品示例文本 Sitecore 项目的 描述 文本加载文本
  • 有没有办法用 Laravel 的 ELOQUENT ORM 来“限制”结果?

    有没有办法用 Laravel 的 ELOQUENT ORM 来 限制 结果 SELECT FROM games LIMIT 30 30 和雄辩 创建一个扩展 Eloquent 的 Game 模型并使用它 Game take 30 gt sk
  • 如何使用 Javascript WebCrypto API 加载 PKCS#12 数字证书

    我正在尝试使用 WebCrypto API 签署数据 但我真的很想使用用户的 PKCS 12 来签署数据 而不是创建私钥 公钥并将其导出到 pkcs 1 或 8 我已经阅读了 W3C 规范 但无法充分理解它 也找不到任何关于如何执行此操作的
  • 模拟实例属性

    请帮助我理解为什么以下不起作用 特别是 被测试类的实例属性对 Python 不可见unittest Mock 在下面的例子中bar实例属性不可访问 返回的错误是 AttributeError
  • Struts 2 选择带有数组列表值的标签

    我正在开发一个简单的 struts 应用程序 在我的 JSP 中 我有一个下拉列表框 使用s select标签 我需要用操作类中的数组列表值填充这些值 我怎样才能做到这一点 需要进行哪些改变structs xml文件来完成这个 JSP
  • 在WAMP中更改MySQL root密码后无法连接

    这是 WAMPSERVER 中最常见的问题之一 我也遇到了这个问题 并在此处以同一标题发布了我的解决方案 但在没有得到适当的回复 解决方案后 我不得不转储 Wampserver 并安装 XAMPP 运行顺利 为了解决问题Scroll dow
  • 应用重力的宝石镶嵌位板

    我正在尝试用位板制作一个宝石迷阵级联模拟器 到目前为止 我已经能够检测并移除火柴 但现在我需要让珠宝掉下来 我的状态由一系列位板表示 每个位板对应一种宝石 我有一张所有被移除的珠宝的面具 是否可以使用一些按位魔法来做到这一点 两个初始位板的
  • aws 负载均衡器未向实例注册

    I use kubeadm启动集群AWS 我可以成功创建负载均衡器AWS通过使用kubectl 但负载均衡器未向任何 EC2 实例注册 这会导致公共无法访问该服务的问题 从观察来看 ELB创建时 在所有子网下都找不到健康的实例 我很确定我正
  • 如何衡量用户桌面应用程序的使用情况? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我用 c NET 3 5 编写了一个
  • 新的核心数据实体与现有核心数据实体相同:单独的实体还是其他解决方案?

    概述 我正在设计一个餐厅管理应用程序 并且有一个名为 Order 的实体 其中包含 Items 由于一家餐厅可以运营多年 拥有数千个已完成的 订单 并且为了使我的应用程序的网络方面更容易并保持数据库快速运行 我想引入 ClosedOrder
  • 将 pcm 加载到 AVAudioPCMBuffer 中

    我有这个代码 func loadSoundfont pitch String let path String Bundle main path forResource self id pitch ofType f32 let url URL
  • MUI TextField sx props 不应用样式

    我正在尝试使用一次性方式设置 TextField 组件的样式sx prop
  • 启动时结构崩溃

    我的应用程序在 onCreate 函数内的这一行崩溃了 Fabric with this new Crashlytics 该设备是 SAMSUNG SM G313 HZ 运行 4 4 2 我已向他们的 Twitter 开发论坛举报 但我的帖
  • 为什么 Microsoft Word 2007 中的 VBA IDE 智能感知不断更改特定变量类型名称的大小写?

    这是我问过的最奇怪的问题 我什至不知道如何表达它 我记得类似的事情早在 VB6 IDE 中就发生过 但我忘记了修复方法 如果是这种情况 那么这就是 VB IDE 中的一个非常古老的错误 问题是这样的 当我不小心输入时 我正在编写一个简单的
  • 用于时间跟踪的 MongoDB 架构设计

    我创建了一个简单的时间跟踪应用程序 人们可以在其中计时 超时并标记休息时间 此跟踪的中心对象是Event产生于User 这与用户状态确保状态管理正确 这是减去的架构更新时间 创建于 fields userId type mongoose S
  • 实体框架在更新实体时表示属性为空

    我正在尝试将新实体添加到现有集合中 但是 当这样做时 父 实体抱怨其他导航属性为空 尽管它们不是 Error 类型异常 发生 System Data Entity Validation DbEntityValidationException