2

I'm working on a fairly large project at the moment and am currently in the planning stages. I've done a lot of reading into the various patterns suggested for development, somthing that has split the team at the moment is when using Entity Framework should the classes be passed through the applciation layers so that a view accepts an Entity Framework class or should these classes be mapped to BLL Classes and if so at which point (Controller or Library) should this be done?

I'm interested in hearing some positives and negitives for each solutions.

2 Answers 2

3

This is one of those great "it depends" questions ....

For me it's a matter of pragmatism. I use the raw entity classes where ever I can for expediency. I start using DTOs when either the object graph in question starts becoming too cumbersome or the object in question has sensitive data I don't want sent over the wire.

Sign up to request clarification or add additional context in comments.

Comments

2

This is again one of those questions that doesn't really have a right or wrong answer, its personal taste really. Personally I would opt for using DTO's or interfaces when passing data to the Views. I don't tend to pass around entity objects to different layers of my application they are strictly confined to the DAL, or if I do need to pass it up a layer I would almost always use an interface never the concrete type.

15 Comments

Thanks James! I know its hard to andwer, but Im after the pros and cons, so why do you not pass entity objects around?
Properties are lazily loaded by default hence if you are passing around an entity (which has properties as such) you will always have to ensure you have a DC available to you. Also if it is purely data you are passing, then a DTO just fits better.
@Pino, yes if I had an entity object called Customer I would usually name my DTO something like CustomerDto so I know which entity the DTO refers to.
@Pino: That is something that you would have to decide based on your application. Your customer dto could have a property called OrderHistory which is a list of OrderDto and when creating your customer dto you could populate this information aswell. My advice would be retrieve what information you require (I tend to include other table information in my DTO if necessary)
You could use a contructor to take in the parameters to make it easier to contruct, however, if you are asking where I would instantiate them.....what I tend to do is extend my entity type to have a method called AsDto which creates the DTO interally and passes it out e.g. MyEntityDto = MyEntity.AsDto();
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.