实体框架“代码嗅觉”问题

时间:2009-08-24 15:14:17

标签: .net entity-framework

我是Ef的粉丝,想要使用它,但我不一定喜欢协会本身的工作方式。如果我有一个简单的查找表,其中可能包含3行,并且通常会被视为代码中的枚举,我不喜欢我实际上必须使用EF中的关联来分配值:

myEntity.MyLookup = db.MyLookups.First(ml => ml.MyLookupId == 5);

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

我的问题是,是否有可能摆脱关联的Store表示,只是将所有内容视为我的实体上的标量,因为没有导航属性并允许我在必要时进行连接?

另外,如果这是可行的,它对跟踪的实体或类似的内容有什么影响吗?谢谢!

2 个答案:

答案 0 :(得分:2)

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

例如,如果您有User表和UserTypes表。您的数据层需要处理此问题,但业务层不需要了解它,假设您的数据适配器中有某种​​工厂方法,它接受用户和用户类型并将其转换为管理员(用于例子)。

不确定这是否有帮助,只是想我会发表意见。

答案 1 :(得分:0)

外键值是EF v1的一个难点。除非你准备自己创建一个EntityKey,否则你上面的方式是唯一的方法。

EF v4.0将通过“FK协会”消除这种头痛。 FK关联是可更新的标量值,代表关系。