【发布时间】:2009-02-16 12:13:46
【问题描述】:
是否可以向我的模型添加数据库中不存在的属性?
例如,我有一个日历表,我想在我的 MVC 控制器中检索这些数据,然后计算出每个条目开始之前的剩余时间并将其返回到视图。所以我希望我的日历模型中的另一个属性保留剩余时间,这是我将在数据库之外生成的值。
我尝试只添加属性,但是当我这样做时,我得到了错误,因为该属性没有映射到任何东西。
这甚至可能吗?
谢谢
【问题讨论】:
是否可以向我的模型添加数据库中不存在的属性?
例如,我有一个日历表,我想在我的 MVC 控制器中检索这些数据,然后计算出每个条目开始之前的剩余时间并将其返回到视图。所以我希望我的日历模型中的另一个属性保留剩余时间,这是我将在数据库之外生成的值。
我尝试只添加属性,但是当我这样做时,我得到了错误,因为该属性没有映射到任何东西。
这甚至可能吗?
谢谢
【问题讨论】:
您应该能够将属性添加到模型,但您将无法使用 LINQ 查询它。 LINQ 最终将构建和表达它希望使用 SQL 对数据库运行的内容。那时,您的 LINQ 将无法找到从您的属性到某个字段的映射。
如果您的查询返回您创建属性的实际类型的 IEnumerable,您的视图可能能够访问它。我不记得 EF 是否坚持在这种情况下进行映射,它可能会这样做。
如果您想为视图提供一些其他复合类型,您可能会发现可以创建使用 LINQ-to-objects 的后续 LINQ 查询。
【讨论】:
这是一个非持久性属性或瞬态。我不太了解实体框架,但通过快速谷歌搜索你应该找到答案。
顺便说一句,您可以在这里找到很多提示: http://weblogs.asp.net/zeeshanhirani/archive/2008/12/18/my-christmas-present-to-the-entity-framework-community.aspx
在自己快速搜索并在 VS2008 中进行测试后,我看不到从映射中排除属性的方法。也许它需要您手动编辑映射文件? :(
【讨论】: