实体框架 - 我做错了吗?

时间:2015-10-01 22:40:58

标签: c# asp.net sql-server entity-framework

我很难让Entity Framework做我想做的事情。我有一个表单生成器应用程序已经在.NET WebForms中运行并完全运行。我刚刚开始将其转换为使用.NET MvC的过程,使用React作为视图层,使用Entity Framework来驱动数据库。

此应用程序的一部分旨在允许用户将表单控件添加到列表中,并将它们以可视方式布局,就像它们将显示在最终发布的表单上一样。因此,您单击名字,它会添加一个输入控件,其中包含ID FirstName,上面的标题文本等等。

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

我一直在尝试使用Entity Framework中的现有表,但是无法使任何外键关系正常工作。当我在MS SQL中添加它们时,它们不会延续并通过表示主表的对象提供从外部表访问数据的方法。

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

所以我已经达到了我导入所有表格的地步,它确实可以正常工作,但是我必须为每个表更新模型以添加一个对象或对象集合,这些对象可以包含对应的引用匹配的外键数据。然后我必须编写将要经历的过程并根据已存在于数据库中的ID列设置对象引用(控件表中的ControlType与ControlTypes表中的ID匹配,等等)。

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

所以我知道这似乎是一面文字,但我不知道该怎么做。我想要一个大数据对象,我可以传递给每个控件,其中包含与该特定控件相关的所有相关信息,并且可以在我的视图层中使用React来显示信息。

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

我是否认为这一切都错了,或者EF真的只是这么难用吗?

0 个答案:

没有答案
相关问题