How do i design EF5 code first entities with protected/private members DDD style

So I am reading this DDD book and at the same time designing a new system. In the DDD book they have an example where the entity have private members such as ID and other values.

Lets say as an example we have a user entity and it has id and a collection of courses it has the right to attend.

Then in DDD style they use something like GrantRightTo(Course c) if we say are on a user entity. And that is all good and well, because in the function I can now check any business rules like if the user is signed up to too many courses. Smart!

The alternative being that anyone has permission to the collection of courses but then the controllers need to know business rules which is not good.

Now here is the problem with EF code first, I can't get my collection of courses to be private/protected like my book does it and still be persisted (dbcontext) So what to do?

I could of course have the collection public and still have a method like GrantRightTo, but then other developers might do it the wrong way, so not ideal.

What to do?


The best way to do this is to map your database model with DTO's (data transfer object).

You would create an extra layer with a DTO-model. You real Domain Model could then be based on this DB Model. In your Domain Model you can than abstract away the differences in the underlying model.

This also has a disadvantage in that you would need to maintain both models if there are vertical changes in your projects. However, it also allows your domain model to change independently from your physical database model.

Need Your Help

Keep Ad/banner static on application Screens

android iphone admob iad ads

After releasing a few apps to Google Play/App Store, I have noticed that the revenue is higher in applications which keep the Ads static (it also increases eCPM).

Python search filenames in subfolders using regex and append to list for further use

regex list search python-2.6 subfolder

My file system contains a large number of folders, with the folder names in the format of 4 digits. Within each folder are varying numbers of files in different formats, with names corresponding to...

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.