繁体   English   中英

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

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

我已经决定,与数据库表中的实际内容相比,View Presentation Layer上需要做的事情太多了。

我在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>

好吧,这没有解决..控制器方法中包含代码,其中联接2个表的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]

多亏了斯蒂芬,当我意识到我可以“使用”其他模型时,我真的违反了正确的模式,在这种模式下,真正的ViewModel可以用于

因此,通过添加[NotMapped],我已经在40分钟前完成了此工作

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

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

因此,尽管“有效”,我将改为使用ViewModel

  1. 我想从tblFiles类显示的属性
  2. 此ExtendedFile类的属性,例如

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

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

例如,我的问题是我在测试数据库错误的情况下编写了“连接字符串”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM