C# 对数据库第一实体框架模型的更改

C# 对数据库第一实体框架模型的更改,c#,entity-framework,entity-framework-6,C#,Entity Framework,Entity Framework 6,我需要构建一个GUI来查询数据库,我选择使用实体框架和数据库优先的方法 在我看来,数据库的布局有一个缺陷,我想知道在ef模型中有哪些选项可以纠正这个缺陷(以及如何纠正) 数据库如下所示: CREATE TABLE a ( idA int ) CREATE TABLE b ( idB int ) CREATE TABLE c ( idC int, fkA int, fkB int ) 我看到的设计问题是,B中的项目并不单独存在,它们总是与A相关。下表更有意

我需要构建一个GUI来查询数据库,我选择使用实体框架和数据库优先的方法

在我看来,数据库的布局有一个缺陷,我想知道在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的孩子)

如果可能的话,我将如何修改生成的模型来改变这一点?显然,使用VisualStudio和EDMX模型编辑器,但是需要对模型进行哪些更改,以便is仍然加载错误的数据库布局,但向GUI提供正确的布局

GUI只读取数据,任何时候都不需要写任何东西


谢谢

如果要对数据库应用更改,则需要的不仅仅是只读访问。修改并保存在数据库中后,可以更新模型

如果您使用的是Ado.net edmx文件,则更新很容易。选择.edmx文件并选择
更新模型
,从数据库中选择相关表,然后按照GUI的其余部分操作

如果您需要从PackageManager控制台或dotnet控制台执行某些操作。使用来自的教程是明智的

从OP更新


这是可能的,但可能会导致许多不必要的副作用。
当您从数据库中获取对象时,您应该将它们放入表示新需要的结构的新对象中。另一种方法是更改模型,您需要向给定的类添加属性。请注意,您的代码将受到许多副作用的影响。

如果要对数据库应用更改,您需要的不仅仅是只读访问。修改并保存在数据库中后,可以更新模型

如果您使用的是Ado.net edmx文件,则更新很容易。选择.edmx文件并选择
更新模型
,从数据库中选择相关表,然后按照GUI的其余部分操作

如果您需要从PackageManager控制台或dotnet控制台执行某些操作。使用来自的教程是明智的

从OP更新


这是可能的,但可能会导致许多不必要的副作用。
当您从数据库中获取对象时,您应该将它们放入表示新需要的结构的新对象中。另一种方法是更改模型,您需要向给定的类添加属性。请注意,您的代码会有很多副作用。

数据库的上下文是什么。从外观上看,表C是表a到表b的多对多关系的
导航表。感谢您的反馈,但不是:C中的项目是表中记录的真实项目,不是m-to-n链接表。数据库的上下文实际上是描述数据库;-)。我应该把真名放在首位。A是数据库(名称),B是模式,C是表。一个表有一个模式和一个数据库,但模式本身总是存在于它的数据库中。数据库的上下文是什么。从外观上看,表C是表a到表b的多对多关系的
导航表。感谢您的反馈,但不是:C中的项目是表中记录的真实项目,不是m-to-n链接表。数据库的上下文实际上是描述数据库;-)。我应该把真名放在首位。A是数据库(名称),B是模式,C是表。一个表有一个模式和一个数据库,但模式本身总是存在于它的数据库中。感谢您的输入,我应该在我的问题中用更好的措辞:数据库结构不应该改变。我可以(从技术角度)对它做任何事情,但我需要保持它不变。我只是想让模型看起来像我做了这个改变。这是可能的,但它可能会导致许多不必要的副作用。我会更新答案。谢谢你的输入,我应该在我的问题中用更好的措辞:数据库结构不应该改变。我可以(从技术角度)对它做任何事情,但我需要保持它不变。我只是想让模型看起来像我做了这个改变。这是可能的,但它可能会导致许多不必要的副作用。我会更新答案。