c# - 在生成的模型中,什么是虚拟伴随着标识外键?
问题描述
在阅读这篇解决了我遇到的相关问题的帖子时,我的解决方案版本感觉像是一个杂物,并向我暗示我错过了实体框架的一个关键点。
我有看起来像这样的表:
Id UNIQUEIDENTIFIER NOT NULL,
SomeField NVARCHAR(50),
SomeTableId UNIQUEIDENTIFIER -- refers to a table named SomeTable which has an Id UNIQUEIDENTIFIER
我Scaffold-DbContext
在我的数据库上运行,它创建了一堆看起来像这样的模型:
public partial class ThisTable
{
public Guid Id { get; set; ]
public string SomeField { get; set; }
public Guid? SomeTableId { get; set; }
public virtual SomeTable SomeTable { get; set; }
}
SomeTable
是NULL
,但我认为用相应的记录填充它会很有用,这样我就可以在其他地方使用该值。所以我写了一个存储库来填充它。
一切都很好,直到我将记录保存回数据库。我收到错误,包括我之前提到的帖子中提到的错误。我的解决方案是编写这样的程序:
List<ThisTable> Clean(List<ThisTable> table)
{
return table.Select( t => new ThisTable { Id = t.Id, SomeField = t.SomeField, SomeTableId = t.SomeTableId } ).ToList();
}
它只复制我打算保存回数据库的字段。如何正确填充生成的virtual
属性?
解决方案
推荐阅读
- python - 如何显示图像并在 1.5 秒后将其杀死?
- vue.js - Vue 3:将 Options API 组件转换为 Composition API(将容器设置为元素 - this.$el vs ref?)
- blockchain - 为什么我的以太坊智能合约交易在 X 笔交易后没有显示?
- c++ - 这个递归案例有什么问题?
- vapor-fluent - 如何使用 Vapor 添加约束?
- python - Python 调度器说明
- git - 接受主分支名称和主分支名称的 git 别名?
- javascript - Javascript竞争条件多个承诺连接字符串
- c++ - 如何将编辑控件的内容与文件中的文本进行比较?
- arrays - 为什么连接和复制大于数组大小的字符串没有错误?