c# - Entity Framework - 通过拆分使大型 edmx 表更易于管理?

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

我认为这是给猫剥皮的最佳技术或最佳方法的问题!

想象一下上面有项目(菜单选项)的菜单。我有一个名为 MenuItem 的表,例如“Spaghetti Bolognese”,除了更好的描述和图片之外,它还有很多其他相关信息。 例如。

  • 基本信息(名称、描述、图片等)
  • 营养信息(约 15 列)
  • 过敏信息(约 16 列)
  • 饮食信息(另外 7 列)(宗教等)

目前,我将所有内容都放在 SQL Server 的one 表中,这对我来说是逻辑数据库设计,因为它不会重复,尽管它为 table 比我想要的长。我已经对不断扩展数据库表感到有点不爽了。但现在我们还想添加“食谱”信息,大约另外 7 列。

我正在使用 Entity Framework 4.latest,感觉可能有功能可以帮助我在 EDMX 中将其拆分? (这就是 ComplexTypes 的含义吗?)还是我只需要在我调用的 ViewModel 类中执行此操作?

我认为在我的代码中使用它来更好地隔离事物之后,我想做的是

  • 菜单项.食谱.成分
  • 菜单项.营养.脂肪
  • 等等

最佳答案

复杂类型可以帮助您,但请注意复杂类型不能包含导航属性,不能为 null 并且始终与实体一起加载。其他可能性是使用 table splitting - 这将允许您将多个一对一相关的实体映射到同一个表。分表的主要特点是:

  • 实体只能共享主键属性
  • 有一个主要实体,其他被视为关系(导航属性)
  • 相关实体必须存在 - 它们不是可选的,因此当您插入新的主要实体时,即使它们为空,您也必须插入这些相关实体
  • 相关实体必须以预加载、惰性加载或显式加载方式加载

关于c# - Entity Framework - 通过拆分使大型 edmx 表更易于管理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7187782/

相关文章:

c# - 如何匹配这个字符串使用正则表达式?

c# - 无法从 Process.Start 运行命令

c# - 如何在没有异步的情况下使用 HttpClient

sql-server - 通过SQL删除特定备份文件

c# - asp.net web api 无法使用非管理员用户连接到 Azure SQL 数据库

c# - 向用户显示成功消息

c# - RateOfCountsPerSecond32 类型的计数器始终显示 0

sql-server - 使用 Key Vault 和证书的 SQL Azure IaaS 加密

asp.net - 是否使用 CMS

javascript - ViewBag 值返回错误的数字