对数据库优先的实体框架模型的更改

时间:2019-05-10 07:28:32

标签: c# entity-framework entity-framework-6

我需要构建一个GUI来查询数据库,我选择使用Entity Framework和数据库优先方法。

我认为该数据库的布局存在缺陷,我想知道在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的子代,而实际上b始终是a的子代,而c是b的子代(也就是a的子代)。

如果有可能,我将如何修改生成的模型以进行更改?显然,使用Visual Studio和EDMX模型编辑器,但是需要对模型进行哪些更改,以便仍然加载错误的数据库布局,但将更正的模型提供给GUI?

GUI将仅读取数据,无需随时写入任何内容。

谢谢!

1 个答案:

答案 0 :(得分:2)

如果要将更改应用于数据库,则除了只读访问权限以外,还需要更多。进行更改并将其保存在数据库中后,您可以更新模型。

如果您使用的是Ado.net edmx文件,则更新很容易。选择.edmx文件,然后选择update model,从数据库中选择相关表,然后遵循其余的GUI。

如果需要从程序包管理器控制台或dotnet控制台进行操作。使用here中的教程是明智的。

从OP更新

有可能,但可能导致许多不良副作用。 从数据库中获取对象时,应将它们装箱到代表新需要的结构的新对象中。另一种方法是更改​​模型,您需要将属性添加到给定的类。警告您的代码将遭受很多副作用。