【发布时间】:2015-08-24 03:10:16
【问题描述】:
我已经决定,与数据库表中的实际内容相比,视图表示层上需要不同的东西太多了。
我在 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();
【问题讨论】:
-
显示产生错误的控制器代码
-
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();
-
所以它尝试加入 dbProd.tblFiles 并且 tblFiles 表没有 FileSize 列。
-
我正在阅读/谷歌搜索,也许只需添加属性 [NotMapped] 就可以了吗?在物业的顶部?
-
但是你的问题是关于视图模型的。如果
ExtendedFile不是您的数据模型的一部分,则它永远不应该在您的数据模型中,只能在相应的视图模型中。为什么你会有一个只包含一个属性的类?
标签: c# asp.net-mvc linq entity-framework asp.net-mvc-viewmodel