public class Client
{
public Int32 ClientID { get; set; }
public virtual ICollection<Inquiry> InquiryManufacturers { get; set; }
public virtual ICollection<Product> Products { get; set; }
public virtual ICollection<Inquiry> InquiryRetailers { get; set; }
}
public class Product
{
public Int32 ProductID { get; set; }
public Int32 ClientID { get; set; }
public virtual Client Client { get; set; }
public virtual ICollection<Inquiry> Inquiries { get; set; }
}
public class Inquiry
{
public Int32 InquiryID { get; set; }
public Int32 ProductID { get; set; }
public Int32 ManufacturerID { get; set; }
public Int32 RetailerID { get; set; }
public virtual Product Product { get; set; }
public virtual Client Manufacturer { get; set; }
public virtual Client Retailer { get; set; }
}
Fluent API jest jakoKod powodujący, że wymagana relacja jest opcjonalna?
HasRequired(i => i.Product)
.WithMany(p => p.Inquiries);
HasRequired(i => i.Manufacturer)
.WithMany(p => p.InquiryManufacturers)
.HasForeignKey(p => p.ManufacturerID);
HasRequired(i => i.Retailer)
.WithMany(p => p.InquiryRetailers)
.HasForeignKey(p => p.RetailerID);
Więc oto kilka klas, które mam zdefiniowane. Mają relacje w następujący sposób: Klient & Produkt ma jeden do wielu, Klient & Zapytanie ma jeden do wielu i Produkt & Pytania mają jedno do wielu. Używam tutaj Code First. Teraz za pomocą płynnego API zdefiniowałem relacje, te relacje mają być wymagane, co oznacza, że Klient & Relacja produktu nie może być pusta, a Klient i Zapytanie również nie może być wartością zerową.
Jednak związek między klientem & Zapytanie jest wymuszane jako opcjonalne z pierwszym kodem. Kiedy próbuję je wprowadzić, EF nie generuje bazy danych.
Czy ktoś może mi powiedzieć, co jest nie tak z moim modelem, że powoduje, że EF nie tworzy wymaganego związku między klientem & Inruiry? Czy to z powodu kaskadowego usuwania? Czytając niektóre, gdzie mssql może mieć tylko jedną kaskadową ścieżkę usuwania między Klientem, Produktem i Zapytaniem. Każde wyjaśnienie pomocy byłoby miłe.
Czy otrzymujesz jakieś błędy? Co masz na myśli mówiąc, że "jest zmuszany do bycia opcjonalnym"? – CDeutsch
nie ma błędów tylko to, że baza danych nie zostanie wygenerowana, ale jeśli zrobię RetailerID i ManufacturerID null i Fluent Api jako HasOptional, wtedy baza danych zostanie wygenerowana. –
user781310
Prosimy o przesłanie kompletnej konfiguracji odwzorowania: wszystko, co jest związane z 3 omawianymi jednostkami. Podaj informacje wystarczające do odtworzenia Twojej sytuacji. Poza tym, na który silnik bazodanowy celujesz? –