2

У меня есть 4 объекта. Они выглядят примерно так:Как сопоставить одну сущность со многими объектами в Entity Framework?

public abstract class Entity 
{ 
    public Guid Id { get; set; } 
    public DateTime CreationDate { get; set; } 
} 

public class Client : 
    Entity 
{ 
    public string Name { get; set; } 
    // ... 
    public IList<Note> Notes { get; set; } 
} 

public class Supplier : 
    Entity 
{ 
    public string Name { get; set; } 
    // ... 
    public IList<Note> Notes { get; set; } 
} 

public class Note : 
    Entity 
{ 
    public Guid EntityId { get; set; } // This points to the Id field of a Client or Supplier 
    public virtual Entity Entity { get; set; } 
    public string EntityName { get; set; } // "Client", "Supplier", etc. 
} 

Теперь, что я хочу, чтобы это создать 3 таблицы, клиент, поставщик, и примечание. Таблица примечаний должна указывать на примечание клиента и поставщика в поле EntityId. Фактически происходит то, что EF добавляет поля Client_ID и Supplier_ID в таблицу примечаний с внешними ключами для каждой соответствующей таблицы. Эффект этого в основном заключается в том, что заметки могут быть созданы только в том случае, если включены как клиент, так и поставщик.

Что мне нужно сделать, чтобы сделать так, как мне нужно?

+0

не automapper то, что вы ищете? – kopelence

+0

Можете ли вы привести пример того, как automapper решит эту проблему? – RichieACC

+0

Как насчет ограничений внешнего ключа? Вам понадобится столбец внешнего ключа в таблице заметок для каждого «родительского» объекта. –

ответ

-1

Попробуйте Info

this.HasOptional(t => t.Client) 
       .WithMany(t => t.Notes) 
       .HasForeignKey(d => d.Id); 
+0

Будет ли это реализовано на Ноте или на Клиенте и Поставщике? – RichieACC

+0

Клиент и поставщик всего класса со списками организаций – J4ime

+0

Нет, только «Клиент». Это не то, чего хочет OP. –

Смежные вопросы