views:

73

answers:

3

We have an ASP.NET MVC application. Is it correct to think of the models as the "entities" in the system?

Presumably this comes down to the "type" of model (view or domain) - and if they are domain models then they are equivalent to entities?

Edit: I ask the question to determine whether the introduction of the "entity" nomenclature into our project is useful, or confusing.

+4  A: 

As far as I'm concerned, you nailed it. Your distinction between view and domain models is correct. A domain model can be considered equivalent to an entity.

To answer your second question, I don't think it is necessary to introduce the entity nomenclature into your project, but I don't think it would be too confusing if this is something you wanted to do. I typically move my domain models into a separate project. I use the stock Models folder to hold my view models

[EDIT] Based on the comments below, I thought I would clarify one thing. Specifically in the context of the Entity Framework, a domain model encompasses more than your DB entities. For example, a Custom Type representing an Address (Address 1/2/3, City, State, Zip, etc.) would also be a domain model even though it isn't given the name "Entity" by the Entity Framework.

Brad Gignac
We do the same thing with our view models, although developers sometimes complain (they'd prefer view models and views to be in the same folder for easier flipping back and forth).
Andrew
For simple projects, I typically dump them all in one folder. We have some larger projects with multiple UIs (WPF/WinForms and Web) where it makes sense to have a separate data access layer. For these projects, view models typically aren't shared between the two.
Brad Gignac
A: 

To paraphrase what wikipedia has to say on the subject, an entity is an object in the domain model that is not defined by its attributes, but rather by a thread of continuity and identity.

My understanding is an entity's identity and uniqueness are its defining quality. No two entities can have the same identity.

jamesaharvey
A: 

An entity is a domain model, although a domain model may not necessarily be an entity. Vaulue objects such as credit cards, addresses, dates, currency, are (or can be) domain models also.

Duncan