首页 > 解决方案 > 在生成的模型中,什么是虚拟伴随着标识外键?

问题描述

在阅读这篇解决了我遇到的相关问题的帖子时,我的解决方案版本感觉像是一个杂物,并向我暗示我错过了实体框架的一个关键点。

我有看起来像这样的表:

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; }
}

SomeTableNULL,但我认为用相应的记录填充它会很有用,这样我就可以在其他地方使用该值。所以我写了一个存储库来填充它。

一切都很好,直到我将记录保存回数据库。我收到错误,包括我之前提到的帖子中提到的错误。我的解决方案是编写这样的程序:

List<ThisTable> Clean(List<ThisTable> table)
{
    return table.Select( t => new ThisTable { Id = t.Id, SomeField = t.SomeField, SomeTableId = t.SomeTableId } ).ToList();
}

它只复制我打算保存回数据库的字段。如何正确填充生成的virtual属性?

标签: c#asp.net-mvcentity-framework

解决方案


推荐阅读