Jak zbudować powiązanie między dwoma bibliotekami w .NET CORE w podejściu First Code.

0

Czy wiesz może jak zbudować powiązanie między dwoma bibliotekami w .NET CORE w podejściu First Code.
Potrzebuje zbudować powiązanie między tablicą z krajami z biblioteki norm a tablicą z formularzami handlowymi.
obie biblioteki działają na osobnych kontekstach.
Powiązania między projektami można dodać jedno kierunkowo ponieważ jeżeli próbuje się dodać wiązanie dwukierunkowe to wyskakuje błąd związany z cyklicznością.
Jest jakiś sposób żeby zbudować taką relację?

namespace Standards.DAL.DataBase
  public class CountryStandard
{
    [Key]
    public int IdCountryStandard { get; set; }
    [Required(ErrorMessage = "Select Country")]
    [Display(Name = "Name Country")]
    [MaxLength(80, ErrorMessage = "Name max 80")]
    public string NameCountryStandard { get; set; }
    public bool IsActive { get; set; }
    [JsonIgnore]
    //public virtual Standard Standard { get; set; }
    public virtual ICollection<Standard> Standard { get; set; }
    public virtual ICollection<TradeForms> TradeForms { get; set; }
}




   namespace Trade.DAL.DataBase
 public class TradeForms
    {
        [Key]
        public int TradeFormsId { get; set; }
/...
.../
    public int IdCountryStandard {get; set; }
     public CountryStandard CountryStandard {get; set; }
    }

Po zbudowaniu relację dodałbym do Fluent API
I wykonał migrację do bazy danych
Tylko nie wiem czy można budować w ten sposób relacje między osobnymi bibliotekami z First Code.

1

Domyślam się, że chodzi o ReferenceLoopHandling. Używasz bardzo dziwnego nazewnictwa, więc nie wiem czy dobrze zrozumiałem.
EF Core reference loop when using Include and ThenInclude

0

relationship.JPG

0

W którą stronę potrzebujesz referencji? Chcesz użyć TradeForms.cs w Standards.DAL czy CountryStandard.cs w Trade.DAL? Kliknij prawym myszy na Pakiety i wybierz opcję Dodaj referencje do projektu (masz po polsku, może się nazwa różnić). Wybierz odpowiedni projekt i odwołaj się do czego chcesz o ile jest public

0

Chcę użyć CountryStandard w bibliotece Trade.DAL (DAL - skrót od Date Access Layer) żeby zbudować relacje potrzebuje Dodaj referencje do projektu w obu projektach ponieważ
do public virtual ICollection<TradeForms> TradeForms { get; set; } - do TradeForms potrzebne są referenje do projektu
oraz do public CountryStandard CountryStandard {get; set; } do - CountryStandard potrzebne są referenje do projektu
no i właśnie w tym jest problem nie da się w jednej i drugiej bibliotece naraz dodać potrzebnych referencji do projektu.
Visual Studio zgłasza błąd związany z cyklicznością. Ma to swoje uzasadnienie, natomiast moje pytanie brzmi skoro są z tym problemy to jak budować relacje między klasami z różnych bibliotek.

2

Nie można mieć ciastka i zjeść ciastka. Tu chcesz mieć jednocześnie separację i coupling. Jeśli potrzebujesz cyklicznych referencji to znaczy, że Twoje projekty nie są jednostką deploymentu, bo i tak muszę być dystrybuowane razem, więc powinny być w jednym projekcie.

1

Nie czytałem 99% tego co tu napisaliście, ale jeśli dwie biblioteki muszą się odwoływać nawzajem to zazwyczaj rozwiązaniem jest wydzielenie trzeciej biblioteki z częścią wspólną lub interfejsami
Tu jest super diagram na zobrazowanie tego

A <-> B

    C
A /   \ B
0

I właśnie tego mi trzeba było od strony architektury aplikacji - żeby ktoś się na ten temat wypowiedział - dziękuję.

1 użytkowników online, w tym zalogowanych: 0, gości: 1