LojiSmith
LojiSmith

Reputation: 290

Return Entity Framework objects from WCF

I am working on a WCF service to provide data to multiple mobile clients. Data model is Entity Framework 4.0. Schema is given below.

Schema

When i returnt he object of SysUser the result also contains the navigation properties and EntityKey and other EF related stuff. Is it possible that i get the pure object(only the database fields without the relationship etc).

Thanks Update the exception occures "Only parameterless constructors and initializers are supported in LINQ to Entities." on followign code:

return (from u in DataSource.SysUsers
                   where u.UserID == UserID
                   select new Player(u)
                   ).FirstOrDefault();

Upvotes: 3

Views: 6530

Answers (2)

Romias
Romias

Reputation: 14133

I think if you remove the virtual keyword in your SysUser model for the navigation properties, those will not be loaded. Later, if you need to load this properties, you can do it manually as stated here: http://msdn.microsoft.com/en-us/data/jj574232

Now, if you want to make SysUser travel through a WCF service, it is not a good idea. First, your service's client will need a reference to your Models Project... and that doesn't feels right. If you don't reference your Models, you will get a proxy for it, that is more or less the same as Joe R explained about DTOs.

Here is a related answer: https://stackoverflow.com/a/7161377/7720

Upvotes: 2

Joe Ratzer
Joe Ratzer

Reputation: 18549

You probably want to send DTOs across the wire rather than your EF objects.

You could use something like AutoMapper to populate your DTOs from the EF objects.

Upvotes: 3

Related Questions