There is no single “right” way to do this. There are probably a number of “wrong” ways, but, like most others, “it depends.”
You will find many opinions on this subject. And a lot of this depends on how you approach him. For example, @Tarzan suggests using your model for both business logic and data-level objects. Others suggest creating separate Entity objects, business objects, and presentation model objects.
If you are making a relatively simple application like CRUD, then you can probably do what @Tarzan offers, and it has few problems. However, in more complex applications, you begin to run into problems doing it this way. For example, what happens when your business logic is different from your data logic? If you combine them into one set of entities, then you are forced to make the logic the same everywhere or spend a lot of time on modernization.
The most flexible approach is to completely isolate the layers of presentation, business, and data. Thus, the requirements (for example) of the user interface should not correspond to other layers. (Here's a simple example, imagine that for some kinds of objects, a particular field is allowed to be null, but not for others. The data layer will only know that the field is NULL, while your business layer will know that certain objects can 't null).
However, this approach can have a lot of overhead and requires what seems like duplicate code at every level ... creating a lot of extra effort, which is often not worth it for small or simple applications.
Keep in mind that MVC is a presentation template. This means that it ONLY refers to the user interface. A “model” is usually considered a “presentation model,” which is the model that the view uses. This model is customized for presentation requirements. For example, using data attributes that you would not put on a data model.
If you think that MVC is strictly presentation, MVC does not care about what data access you use, and does not care about which business layer you use. This can be a service level, a repository, or a library of business objects (for example, CSLA).
A common pattern in MVC applications is to use a service level of some type or repository if you just perform CRUD operations. Typically, there is some sort of mapping system between each layer, using technologies such as AutoMapper or custom assembly mapping classes.
The point here is simple. MVC does not apply to business and data, so do not think about how they fit into an MVC application. They do not, or at least they do not differ from the elementary interface itself.
Your application is a collection of objects in which you can look at architecture. This architecture consists of different layers. MVC, Service, Data, etc. MVC may be the main user interface, but that does not mean that everything else is also MVC.