我正在使用EF并想知道其他人如何将数据上下文与实体分开。
基本上我需要一个层来访问数据上下文(模型对象)来调用SaveChanges()等..而其他层需要访问实体类型本身。因此,例如,如果一个方法返回一个实体并且我从我的UI调用了该方法,那么我将不得不从UI引用该模型并且这不是很好。
有没有办法让实体类型在一个项目中,并在另一个项目中有数据上下文?
我想另一种方法是为每个实体创建接口,并将接口放在其他层可以引用的另一个项目中。但这是一个很大的维护和痛苦的屁股答案 0 :(得分:2)
从您的实体创建一个域模型,它基本上反映了您拥有的字段/属性。这可以是一个完全独立的项目,单独的层。
要在两者之间进行映射 - EF实体和域模型类 - 我会使用像AutoMapper这样的工具来简化两个独立但几乎相同的类之间的分配。
通过这种方式,您可以获得干净,漂亮的分离,并为您节省大量无聊的打字!
答案 1 :(得分:2)
在我看来,虽然这确实是一个痛苦的屁股,但接口是更好的方法。你真的会实现松散耦合。
使用界面,您稍后可以完全更改您的实体层,您的用户界面甚至不会注意到。为此目的创建了接口,清晰的分离和隔离。
人们总是倾向于发现无聊和浪费时间的界面。但是你通过忽略它们来节省时间,你会稍后付款,我告诉你!
Marc_s也给了你一个很好的答案(嘿,那是marc_s!),但在我看来不那么纯粹。
你也可以去POCO实体对象,但是从这里开始耦合。