实体框架 - 通过拆分使大型edmx表更易于管理?

时间:2011-08-25 09:11:03

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

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

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

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

目前我已经在SQL服务器的 one 表中完成了所有这一切,这对我来说是逻辑数据库设计,因为它不重复,尽管它为字段列表设置了表比我想要的长。关于不断扩展数据库表,我已经感觉有点不好了。但现在我们还要添加“食谱”信息,大约另外7列。

我正在使用Entity Framework 4.latest,并且觉得有可能帮助我在EDMX中拆分它的功能? (那是ComplexTypes的吗?)或者我只需要在我调用的ViewModel类中执行此操作吗?

我认为我在我的代码中使用后更好地隔离事物就像是

  • MenuItem.Recipe.Ingredients
  • MenuItem.Nutrition.Fat

1 个答案:

答案 0 :(得分:0)

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

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