【发布时间】:2020-02-25 16:40:58
【问题描述】:
我想问一下是否可以在运行时更新数据库模型(例如列)?
我了解了 Entity Framework(在我的情况下必须使用数据库优先方法)或 Linq-to-SQL,但是当数据库表发生更改时,我必须手动更新应用程序的模型。
在我的应用程序中,我想使用 MVVM 模式,所以必须有一个模型类,它反映了一个数据库表。据我所知,我无法在运行时向类添加属性。
这是示例场景:
- 数据库表有3列:col1、col2、col3
- 模型类有 3 个属性:col1、col2、col3
- 使用实体框架,我可以轻松地从数据库中获取数据,然后将该数据绑定到控件,例如。数据网格
- 应用程序用户可以向数据库添加新列
- 还有一个问题。我找不到任何方法来刷新模型然后绑定到 DataGrid。
问题:是否有任何工具可以帮助我解决第 5 点的问题?
【问题讨论】:
-
我相信您正在寻找的是 EF 迁移?
-
这听起来更像是架构的问题。我永远不会允许用户向数据库添加新列。你想解决什么问题?也许有更好的方法。
-
@phuzi 应用程序必须对用户灵活。想象一下软件开发人员正在休假的情况。应用程序在这段时间内被阻塞,因为没有人将模型迁移到数据库。
-
通常我已经看到这样的动态字段在单独的表或两个表中作为行实现 - 而不是通过修改应用程序。然后,您将在模型上拥有诸如
IList<CustomColumn> userColumns之类的属性 -
我建议应用程序需要能够在不修改代码的情况下处理这些自定义列这样做可能会降低性能,但你不能同时拥有这两种方式。
标签: c#