database-first Entity Framework 模型的变化
Changes to a database-first Entity Framework model
我需要构建一个 GUI 来查询数据库,我选择使用 Entity Framework 和 database-first 方法。
在我看来,数据库的布局存在缺陷,我想知道在 ef 模型中我可以选择什么来更正这个问题(以及如何)。
数据库如下所示:
CREATE TABLE a (
idA int
)
CREATE TABLE b (
idB int
)
CREATE TABLE c (
idC int,
fkA int,
fkB int
)
我看到的设计问题是 B 中的项目不会单独存在,它们总是与 A 相关。下表会更有意义:
CREATE TABLE a (
idA int
)
CREATE TABLE b (
idB int,
fkA int,
)
CREATE TABLE c (
idC int,
fkB int
)
换句话说,c被设置为独立a和b的achild,而实际上b永远是a的achild,c是achild 的 b(以及因此的 a)。
如果可能的话,我将如何修改生成的模型来改变它?显然,使用 Visual Studio 和 EDMX 模型编辑器,但是需要对模型进行哪些更改,以便仍然加载错误的数据库布局,但向 GUI 提供更正的布局?
GUI只会读取数据,不需要随时写入任何东西。
谢谢!
如果您想将更改应用于数据库,您需要的不仅仅是只读访问权限。当更改完成并保存在数据库中时,您可以更新模型。
如果您使用的是 Ado.net edmx 文件,更新很容易。 Select .edmx 文件和 select update model
、select 数据库中的相关表格以及 GUI 的其余部分。
如果您需要来自包管理器控制台或 dotnet 控制台的内容。使用来自 here.
的教程是明智的
更新自 OP
这是可能的,但它可能会导致许多不需要的 side-effects。
当您从数据库中获取对象时,您应该将它们装箱到代表新需要的结构的新对象中。另一种方法是更改模型,您需要向给定的 类 添加属性。请注意,您的代码会有很多副作用。
我需要构建一个 GUI 来查询数据库,我选择使用 Entity Framework 和 database-first 方法。
在我看来,数据库的布局存在缺陷,我想知道在 ef 模型中我可以选择什么来更正这个问题(以及如何)。
数据库如下所示:
CREATE TABLE a (
idA int
)
CREATE TABLE b (
idB int
)
CREATE TABLE c (
idC int,
fkA int,
fkB int
)
我看到的设计问题是 B 中的项目不会单独存在,它们总是与 A 相关。下表会更有意义:
CREATE TABLE a (
idA int
)
CREATE TABLE b (
idB int,
fkA int,
)
CREATE TABLE c (
idC int,
fkB int
)
换句话说,c被设置为独立a和b的achild,而实际上b永远是a的achild,c是achild 的 b(以及因此的 a)。
如果可能的话,我将如何修改生成的模型来改变它?显然,使用 Visual Studio 和 EDMX 模型编辑器,但是需要对模型进行哪些更改,以便仍然加载错误的数据库布局,但向 GUI 提供更正的布局?
GUI只会读取数据,不需要随时写入任何东西。
谢谢!
如果您想将更改应用于数据库,您需要的不仅仅是只读访问权限。当更改完成并保存在数据库中时,您可以更新模型。
如果您使用的是 Ado.net edmx 文件,更新很容易。 Select .edmx 文件和 select update model
、select 数据库中的相关表格以及 GUI 的其余部分。
如果您需要来自包管理器控制台或 dotnet 控制台的内容。使用来自 here.
的教程是明智的更新自 OP
这是可能的,但它可能会导致许多不需要的 side-effects。 当您从数据库中获取对象时,您应该将它们装箱到代表新需要的结构的新对象中。另一种方法是更改模型,您需要向给定的 类 添加属性。请注意,您的代码会有很多副作用。