实体框架添加不在db表

时间:2015-08-24 03:10:17

标签: c# asp.net-mvc linq entity-framework asp.net-mvc-viewmodel

我已经决定,与数据库表中的实际内容相比,View Presentation Layer上需要有太多不同的东西。

我在C#中有一类属性,代表我的数据库模型 然而,我正在阅读有关ViewModels的内容,我可以看到他们如何做出不显示包含您不希望在视图上显示的不必要数据量的好东西,它也可以是组合多个模型的重要组合。您可以使用更多内容进行查看。

我只是尝试添加一个带有属性的类

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

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

public ExtendedFile ExtendedFile { get; set; }

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

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

那么我的View现在已经

<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();

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

感谢Stephen,当我意识到我“可以”使用这个其他模型时,我只是真的反对正确的模式,其中真正的ViewModel是

因此我只需添加[NotMapped]

就可以在40分钟前完成这项工作
StringBuilder

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

因此,虽然“工作”,但我将改为使用带

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

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

答案 2 :(得分:0)

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

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