我是Ef的粉丝,想要使用它,但我不一定喜欢协会本身的工作方式。如果我有一个简单的查找表,其中可能包含3行,并且通常会被视为代码中的枚举,我不喜欢我实际上必须使用EF中的关联来分配值:
myEntity.MyLookup = db.MyLookups.First(ml => ml.MyLookupId == 5);
我的意思是,它不仅看起来很时髦,而且还会再次查询数据库,这样我就可以有效地分配值“5”。我知道这也可以通过MyLookupReference设置EntityKey,但这看起来更有气味。
我的问题是,是否有可能摆脱关联的Store表示,只是将所有内容视为我的实体上的标量,因为没有导航属性并允许我在必要时进行连接?
另外,如果这是可行的,它对跟踪的实体或类似的内容有什么影响吗?谢谢!
答案 0 :(得分:2)
我认为这是将Business Logic与数据访问层分开的另一个原因。当然,你可能已经这样做了。
例如,如果您有User表和UserTypes表。您的数据层需要处理此问题,但业务层不需要了解它,假设您的数据适配器中有某种工厂方法,它接受用户和用户类型并将其转换为管理员(用于例子)。
不确定这是否有帮助,只是想我会发表意见。
答案 1 :(得分:0)
外键值是EF v1的一个难点。除非你准备自己创建一个EntityKey,否则你上面的方式是唯一的方法。
EF v4.0将通过“FK协会”消除这种头痛。 FK关联是可更新的标量值,代表关系。