Entity Framework 添加不在数据库 table 中的 属性 时列名无效

Entity Framework Invalid column name when adding property that is not in db table

我认为与数据库中实际存在的内容相比,视图表示层上有太多需要不同的东西 table。

我在 C# 中有一个 class 属性代表我的数据库模型 然而,我正在阅读有关 ViewModels 的文章,我可以看到它们如何做一些好的事情,即不显示包含您不希望在视图上显示的不必要数据量,并且它也可以是将多个模型组合在一起的重要集合您有更多可用的东西可以滴入视图。

我只是想添加一个 class 和一个 属性

  public class ExtendedFile
  {
     public string FileSize { get; set; }
  }

然后我想我可以简单地将它作为另一个 属性 添加到我的另一个模型 class 中,所以我添加了它

public ExtendedFile ExtendedFile { get; set; }

然后我似乎可以在我的控制器中简单地补水

 file.ExtendedFile.FileSize = ConvertFileSize(file.size);

那么我的视图现在有

<td>@item.ExtendedFile.FileSize</td>

好吧,那没有成功.. 控制器方法中有代码,其中连接 2 tables 的 linq 查询吓坏了。错误信息是:

Invalid column name 'ExtendedFile_FileSize'.

导致错误的代码是:

var query = (
    from qtips in dbProd.tblTips 
    where qtips.id == 30 
    join files in dbProd.tblFiles on qtips.id.ToString() 
    equals files.@group select new { qtips, files }).ToList();

在不是数据库列的 属性 上将属性添加为 [NotMapped]

感谢斯蒂芬,虽然我意识到我 "can" 确实使用了这个其他模型,但我只是真正反对真正的 ViewModel 的正确模式

因此我在 40 分钟前通过简单地添加 [NotMapped]

[NotMapped]
public ExtendedFile ExtendedFile { get; set; }

它暴露了一个更大的问题,即我不了解 ViewModel。

因此,尽管 "works" 我将改为使用

的 ViewModel
  1. 我想从 tblFiles 中显示的属性 class
  2. 这个ExtendedFile的属性class如

    public class ExtendedFile
    {
        public string FileSize { get; set; }
        //more properties 
    }
    

这意味着它找不到模型中定义的数据库字段。

例如,我的问题是我用测试数据库写错了"Connection string"。