代码之家  ›  专栏  ›  技术社区  ›  James Alexander

实体框架“代码气味”问题

  •  0
  • James Alexander  · 技术社区  · 16 年前

    我是英孚的粉丝,我想用它,但我不一定是协会本身如何运作的粉丝。如果我有一个简单的查找表,其中可能包含3行,并且通常在代码中被视为枚举,那么我不希望有效地执行此操作,以便使用ef中的关联来分配值:

    myEntity.myLookup=db.myLookups.First(ml=>ml.myLookupid==5);

    我的意思是,它不仅看起来很奇怪,而且它还会再次查询数据库,这样我就可以有效地分配值“5”。我知道通过MyLookupReference设置EntityKey也是可能的,但这看起来更臭。

    我的问题是,如果没有导航属性,是否可以去掉关联的存储表示,只将实体上的所有内容视为标量,并允许我在必要时进行联接?

    此外,如果这是可行的,它是否会对跟踪的实体有任何影响或类似的影响?谢谢!

    2 回复  |  直到 16 年前
        1
  •  2
  •   Jimmeh    16 年前

    我认为这是将业务逻辑与数据访问层分开的另一个原因。当然,你可能已经这样做了。

    例如,如果您有一个用户表和一个用户类型表。您的数据层需要处理这一问题,但是业务层不需要了解这一点,假设您的数据适配器中有某种工厂方法,它将用户和用户类型转换为管理员(例如)。

    不确定这是否有帮助,我只是想给出一个意见。

        2
  •  0
  •   Dave Swersky    16 年前

    外键值是ef v1中的痛点。除非你准备好自己创建一个EntityKey,否则你在上面做的方式是唯一的方法。

    EFv4.0可以通过“fk关联”来解决这个问题。fk关联是表示关系的可更新的标量值。