我无法弄清楚的 EFCore 的无效列警告

我正在阅读以下复数教程(https://app.pluralsight.com/library/courses/asp-dot-net-core-restful-api-building/table-of-contents)并尝试将知识应用于我在制作基本应用程序的同时拥有的现有数据库。


1) 我在 AssetRepository 中 AddAsset 的开头放置了一个断点。


2) 我向我的 API 发送以下 POST 请求:


POST http://localhost:6059/api/assets


{

    "bay": "X",

    "tile":  "1",

    "Serialnumber": "SERIAL",

    "devicename": "DEVICENAME",

    "assetspecs" : [

            {

                "assetattrid": "SIZE",

                "numvalue":12

            },

            {

                "assetattrid": "POWER",

                "numvalue":24

            }

        ]

}   

3) CreateAsset 从 AssetController 运行,AddAsset 从存储库通过控制器运行


4) 调试器遇到了 _assetRepository.AddAsset(assetEntity); 并从存储库运行 AddAsset


5) 就在 AssetRepository.AddAsset 的最后一行执行之前,(_context.Asset.Add(asset);) 调试器告诉我,在进入该行之前,我有一组格式正确且具有唯一 ID 的记录 - 一切看起来都正常并且应该将其添加到数据库中。


6) 我按下 f11 并且调试器跳转到我的上下文文件并运行 OnConfiguring 和 OnModelCreating 没有问题,然后返回到它停止的 CreateAsset 控制器操作。


7) 我再次按 f11 并检查 if (!_assetRepository.Save()) 条件,这会引发接受,告诉我我有一个无效的列名 Assetuid。在应用程序洞察调试输出中,列是大写的,所有其他列都以小写开头,这看起来很奇怪。


我在这上面花了半天时间,如果有人可以提供帮助,我很茫然。还有一些可能涉及到的文件,我没有代表,如果您需要进一步查看任何内容,请告诉我,谢谢!!!!


红颜莎娜
浏览 285回答 1
1回答

哔哔one

解决了我的问题。由于此代码背后的应用程序使用表的方式,我没有按照 EFcore 想要的方式执行关系,并且我将 ASSETUID 错误地设置为关键字段。由于 assetspec 实体没有 ASSETUID 列,根据我所做的一些研究,这会导致导航属性出现问题。我把PK改成了ASSETNUM;由于两个实体都将 ASSETNUM 作为属性,我现在一切都很好!
打开App,查看更多内容
随时随地看视频慕课网APP