Serializacja obiektów Entity Framework za pomocą relacji jeden do wielu

Próbuję użyć EF z Code First i Web API. Nie mam żadnych problemów, dopóki nie zacznę serializować relacji wiele-do-wielu. Gdy próbuję wykonać poniższą metodę web api poniżej, otrzymuję następujący komunikat o błędzie:

public class TagsController : ApiController
{

        private BlogDataContext db = new BlogDataContext();

        // GET api/Tags
        public IEnumerable<Tag> GetTags()
        {
            return db.Tags.AsEnumerable();
        }
}

Otrzymuję następujący błąd:

'System.Data.Entity.DynamicProxies.Tag_FF17EDDE6893000F7672649A39962DB0CA591C699DDB73E8C2A56203ED7C7B6D' z nazwą kontraktu danych 'Tag_FF17EDDE6893000F7672649A39962DB0CA591C699DDB73E8C2A56203ED7C7B6D:http://schemas.datacontract.org/2004/07/System.Data.Entity.DynamicProxies„nie oczekuje się. Rozważ użycie DataContractResolver lub dodaj dowolne typy nieznane statycznie do listy znanych typów - na przykład za pomocą atrybutu KnownTypeAttribute lub dodając je do listy znanych typów przekazanych do DataContractSerializer.

Przeczytałem kilka artykułów SO (artykuł 1, artykuł 2), że poprawka polega na dodaniu następującego atrybutu:

[DataContract (IsReference = true)]

ale to nie przyniosło skutku. Również użycie [IgnoreDataMember] nie działa. Jedyną opcją, która wydaje się działać, jest ustawienie Configuration.ProxyCreationEnabled na false. Czy to moja jedyna opcja? Czy czegoś mi brakuje?

Przykładowe obiekty POCO:

Etykietka

[DataContract(IsReference = true)]
public class Tag
{
        public Tag()
        {
            this.Blogs = new HashSet<Blog>();
        }

        [Key]
        [DataMember]
        public int Id { get; set; }

        [DataMember]
        public string Name { get; set; }

        [IgnoreDataMember]
        public virtual ICollection<Blog> Blogs { get; set; }
}

Blog

[DataContract(IsReference = true)]
public class Blog
{
    public Blog()
    {
        this.Tags = new HashSet<Tag>();
    }

    [Key]
    [DataMember]
    public int Id { get; set; }

    [DataMember]
    public string Name { get; set; }

    [IgnoreDataMember]
    public virtual ICollection<Tag> Tags { get; set; }
}

questionAnswers(2)

yourAnswerToTheQuestion