添加不在数据库表中的属性时,列名无效

本文关键字:无效 属性 数据库 添加 | 更新日期: 2023-09-27 18:09:40

我已经决定,与数据库表中的实际内容相比,视图表示层上需要不同的东西太多了。

我在c#中有一个属性类,它代表我的数据库模型然而,我正在阅读关于ViewModels的内容,我可以看到它们如何做到不显示包含不必要的数据量的好事情,你不希望在视图上显示,它也可以是组合多个模型的重要集合,在这些模型中,你有更多的可用性,可以滴入视图。

我只是想添加一个带有属性

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

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

public ExtendedFile ExtendedFile { get; set; }

那么我似乎可以在我的控制器中简单地填充这个

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

那么我的视图现在有

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

好吧,那没有成功…控制器方法中有一个代码,其中连接两个表的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]

感谢Stephen,虽然我意识到我"可以"使用其他模型,但我只是违背了正确的模式,其中真正的ViewModel是

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

来工作了
[NotMapped]
public ExtendedFile ExtendedFile { get; set; }

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

因此,当"工作",我将有一个ViewModel与

  1. 我想从tblFiles类
  2. 中显示的属性
  3. 这个类的属性,比如

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

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

例如,我的问题是我用测试数据库写了错误的"连接字符串"。