EF Code First Fluent API'de Yabancı Anahtarın tanımlanması ile ilgili bir sorum var. Böyle bir senaryo var:Yabancı Anahtarlı Varlık Çerçeve Kodunun Belirtilmesi Önce Fluent Api
İki sınıf Kişi ve Araba. Benim senaryoda Araba Kişiyi atayabilir veya atayamaz (bir veya sıfır ilişki). Kodu: Benim örnekte
public class Person
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
public class Car
{
public int Id { get; set; }
public string Name { get; set; }
public Person Person { get; set; }
public int? PPPPP { get; set; }
}
class TestContext : DbContext
{
public DbSet<Person> Persons { get; set; }
public DbSet<Car> Cars { get; set; }
public TestContext(string connectionString) : base(connectionString)
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Car>()
.HasOptional(x => x.Person)
.WithMany()
.HasForeignKey(x => x.PPPPP)
.WillCascadeOnDelete(true);
base.OnModelCreating(modelBuilder);
}
}
Ben ppppp yabancı anahtar PersonId adlandırmak istiyorum.
modelBuilder.Entity<Car>()
.HasOptional(x => x.Person)
.WithMany()
.HasForeignKey(x => x.PPPPP)
.WillCascadeOnDelete(true);
Ama ilişki sıfıra biridir ve ben WithMany yöntemi kullanarak hata yok korkuyorum ama EF uygun eşleştirmeleri ile veritabanını oluşturmak ve her şey iyi çalışıyor: my eşlemenizde diyorum.
Lütfen Fluent API kodumda yanlış mıyım, yoksa şu anda yapmayı sevmenin iyi bir yolu var mı?
Yardımlarınız için teşekkürler.
Tamam, cevap için teşekkürler. – patryko88
Bir "bir (sıfır)" ilişkisine nasıl sahip olabilirsiniz ve Fluent API'sinin WithMany() bölümünü kullanabilirsiniz? @ patryko88 kodunu istediğin gibi çalıştırdın mı? Eğer öyleyse, cevabı yazabilir misiniz? Teşekkürler! –
@BrianBehm EF, yalnızca bir PK eşlemesi paylaştıysanız, birebir ilişkinin her iki tarafındaki gezinme özelliklerine sahip olmanızı sağlar. Koleksiyon özelliğini ihmal ederek ilişki, bire bir gibi. – Eranga