entity framework:关注点分离

我正在使用EF并想知道其他人如何将数据上下文与实体分开。

基本上我需要一个层来访问数据上下文(模型对象)来调用SaveChanges()等..而其他层需要访问实体类型本身。 因此,例如,如果一个方法返回一个实体,并且我从我的UI调用该方法,那么我将不得不从UI引用该模型,这并不好。

有没有办法让实体类型在一个项目中,并在另一个项目中拥有数据上下文?

我想另一种方法是为每个实体创建接口,并将接口放在其他层可以引用的另一个项目中。 但这是一个很大的维护和痛苦的屁股

在我看来,虽然这确实是一个痛苦的屁股,接口是更好的方式去。 你真的会实现松散耦合。

使用界面,您稍后可以完全更改您的实体层,您的UI甚至不会注意到。 为此目的创建了接口,清晰的分离和隔离。

人们总是倾向于发现无聊和浪费时间的界面。 但是你通过忽略它们来节省时间,你会稍后付款,我告诉你!

Marc_s也给了你一个很好的答案(嘿,那是marc_s!),但在我看来不那么纯粹。
你也可以去POCO实体对象,但是从这里开始耦合。

从您的实体创建一个域模型,它基本上反映了您拥有的字段/属性。 这可以是一个完全独立的项目,单独的层。

要在两者之间进行映射 – EF实体和域模型类 – 我会使用像AutoMapper这样的工具来简化两个独立但几乎相同的类之间的分配。

通过这种方式,您可以获得干净,漂亮的分离,并为您节省大量无聊的打字!