C# 实体框架-我做错了吗?

C# 实体框架-我做错了吗?,c#,asp.net,sql-server,entity-framework,C#,Asp.net,Sql Server,Entity Framework,我很难让实体框架做我想让它做的事情。我有一个表单生成器应用程序,它已经在.NETWebForms中启动并完全运行。我刚刚开始将其转换为使用.NETMVC,使用React作为视图层和实体框架来驱动数据库 此应用程序的一部分旨在允许用户将表单控件添加到列表中,并按照最终发布的表单上显示的方式对其进行可视化布局。因此,单击FirstName,它会添加一个输入控件,其ID为FirstName,标题文本位于其上方,等等 我已经设置了视图层,以显示有关控件的一些基本信息,并将它们放入列表中。我已经得到了所有

我很难让实体框架做我想让它做的事情。我有一个表单生成器应用程序,它已经在.NETWebForms中启动并完全运行。我刚刚开始将其转换为使用.NETMVC,使用React作为视图层和实体框架来驱动数据库

此应用程序的一部分旨在允许用户将表单控件添加到列表中,并按照最终发布的表单上显示的方式对其进行可视化布局。因此,单击FirstName,它会添加一个输入控件,其ID为FirstName,标题文本位于其上方,等等

我已经设置了视图层,以显示有关控件的一些基本信息,并将它们放入列表中。我已经得到了所有的数据库表,其中包含了关于可以添加到页面中的各种控件类型的集合信息。我的WebForms版本管理各种数据表之间的所有关系,以及如何通过代码为视图层打包这些关系

我一直在尝试在实体框架中使用现有的表,但无法使任何外键关系正常工作。当我将它们添加到MS SQL中时,它们不会遗留下来,并提供了通过表示主表的对象从外部表访问数据的方法

当我离开表时,SQL本身没有任何外键关系 并将它们添加到VisualStudio中的模型中,它也不会正确同步对象。它将抛出与缺少映射或在外部对象中找不到数据相关的错误

因此,我已经到了导入所有表的地步,这些表确实可以正常工作,但随后我必须更新每个表的模型,以添加一个对象或对象集合,该对象或对象集合可以包含对相应匹配外键数据的引用。然后我必须编写一些过程,这些过程将根据数据库中已经存在的ID列(Controls表中的ControlType与ControlTypes表中的ID匹配,等等)来完成并设置对象引用本身

然后,如果我在数据库中进行更改并更新模型,它将删除我添加到模型中的所有自定义对象,如果我删除了数据库中的列,则可能会引发更多的启动错误。真头痛

所以我知道这看起来像一堵文字墙,但我不知道该怎么办。我只希望有一个大数据对象,我可以为每个控件传递它,它包含与该特定控件相关的所有相关信息,并且可以由我的视图层中的React来显示这些信息

另一种选择是,我可以将Ajax请求构建到各种组件中,这些组件将进行数据库调用,以获取与控件特定部分相关的信息,但这似乎是一个巨大的难题


我这样做是完全错误的还是EF真的很难使用?

EF在你让它做它想做的事情时效果最好。似乎你有一个可行的解决方案,你从加入EF中获得了什么?好吧,过去十年我一直是一名独立开发者,我想我已经习惯了生活在泡沫中。直到最近一两年,我才开始关注技术趋势,实际上我在不了解ActiveRecord或Entity Framework的情况下为我的表单生成器编写了自己的ORM。因此,我接受了web开发的现代状态,我认为这些由大公司编写的复杂系统应该是配套的,只要让它们处理我为表单生成器手工编写的所有数据库内容(与它为完成的表单实际生成的数据库内容相反,这些都是自动执行的)。如果EF没有解决问题,就不要使用它。还有其他的ORM,更轻的微型ORM,可以做更多您需要的事情,并且不碍事——或者不使用。EF在您让它做它想做的事情时效果最好。似乎你有一个可行的解决方案,你从加入EF中获得了什么?好吧,过去十年我一直是一名独立开发者,我想我已经习惯了生活在泡沫中。直到最近一两年,我才开始关注技术趋势,实际上我在不了解ActiveRecord或Entity Framework的情况下为我的表单生成器编写了自己的ORM。因此,我接受了web开发的现代状态,我认为这些由大公司编写的复杂系统应该是配套的,只要让它们处理我为表单生成器手工编写的所有数据库内容(与它为完成的表单实际生成的数据库内容相反,这些都是自动执行的)。如果EF没有解决问题,就不要使用它。还有其他的ORM,更轻的微型ORM,可以做更多你需要的事情,并且不碍事——或者不用。