Сериализация объектов Entity Framework с отношением «один ко многим»

Я пытаюсь использовать EF с Code First и Web API. У меня нет проблем, пока я не начну сериализацию отношений «многие ко многим». Когда я пытаюсь выполнить следующий метод веб-API ниже, я получаю следующее сообщение об ошибке:

public class TagsController : ApiController
{

        private BlogDataContext db = new BlogDataContext();

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

Я получаю следующую ошибку:

'System.Data.Entity.DynamicProxies.Tag_FF17EDDE6893000F7672649A39962DB0CA591C699DDB73E8C2A56203ED7C7B6D' с именем контракта данных 'Tag_FF17EDDE6893000F7672649A39962DB0CA56B6D7D7D6D7D7R8D3D3R8D3D3103995http://schemas.datacontract.org/2004/07/System.Data.Entity.DynamicProxies'не ожидается. Рассмотрите возможность использования DataContractResolver или добавьте любые типы, которые не известны статически, в список известных типов - например, с помощью атрибута KnownTypeAttribute или добавив их в список известных типов, переданных в DataContractSerializer.

Я прочитал несколько статей ТАК (Статья 1, статья 2) что исправить это добавить следующий атрибут:

[DataContract (IsReference = true)]

но это не имело никакого эффекта. Также использование [IgnoreDataMember] не имеет эффекта. Единственная опция, которая, кажется, работает, это установить Configuration.ProxyCreationEnabled в false. Это мой единственный вариант? Я что-то пропустил?

Образцы объектов POCO:

Тег

[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; }
}

Блог

[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; }
}

Ответы на вопрос(2)

Ваш ответ на вопрос