EF Code First: таблица соединения пуста - PullRequest
0 голосов
/ 22 июля 2011

У меня есть два кода POCO Entity Framework.Я могу легко добавлять новые элементы сайта и технологии в базу данных, но не могу связать сайты с технологиями.Когда я делаю это ...

if(!site.Technologies.Any( o => (o.Name == technology.Name &&  technology.Source == source)))
{
  site.Technologies.Add(technology);
  technology.Sites.Add(site);
}

Я получаю ошибку дублирующего ключа.Если я удаляю вторую строку из условного выражения, таблица соединений TechnologiesSites не получает никаких записей!Как сделать вставку в EF Code First?

public class Site
{
    public Site()
    {
        Technologies = new HashSet<Technology>();
    }

    [Key]
    public string Hostname { get; set; }
    public virtual ICollection<Technology> Technologies { get; set; }
}

и

public class Technology
{
    [Key, Column(Order = 0)]
    public string Name { get; set; }
    [Key, Column(Order = 1)]
    public string Source { get; set; }
    public virtual ICollection<Site> Sites { get; set; }

    public Technology()
    {
        Sites = new HashSet<Site>();
    }
}

1 Ответ

0 голосов
/ 19 августа 2011

Вы должны проверить оба направления:

if(!site.Technologies.Any( o => (o.Name == technology.Name &&  technology.Source == source)) &&
!technology.Sites.Any(x => x.Hostname == site.Hostname)
)
{
  site.Technologies.Add(technology);
  technology.Sites.Add(site);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...