Bu soruda: Ef Many To Many, bir bağlantı tablosunun manuel olarak nasıl belirtileceğine dair bir cevap geldi. Ama biraz kendine özgü bir durumum var (ki eminim ki gerçekten eşsiz değil).EF Akıcı API Çok sayıda farklı ID Alan Adına Birçok Kişi Adları
İki tablomun her birinde bir Kimlik alanı var. E.G .: [dbo].[Account].[Id]
ve [dbo].[Person].[Id]
. Benim Kod-Birinci, bu tablolardan her biri aşağıdaki OnModelCreating sahiptir:
modelBuilder.Entity<Account>.HasKey(x => x.Id);
modelBuilder.Entity<Person>.HasKey(x => x.Id);
Ama [dbo].[AccountsToPersons]...
tablo AccountsToPersons tablo kodunda bir sınıf tarafından temsil edilmediği [AccountId]
ve [PersonId]
alanları ör .: vardır.
Açıkçası halihazırda var olan bir Modelim var, ancak modeli veritabanından güncellemek yerine EF Code-First Fluent API kullanıyoruz.
Farklı kimlik sütunları adlarını eşleme ile çalışmasını sağlamak için bu kodu nasıl değiştirebilirim? EF Query (from x in context.Accounts select x).ToList();
için temel bir Linq çalıştırırken
public DbSet<Person> Persons { get; set; }
public DbSet<Account> Accounts { get; set; }
. . .
modelBuilder.Entity<Account>()
.HasMany(a => a.Persons)
.WithMany()
.Map(x =>
{
x.MapLeftKey("AccountId"); // <-- Account.Id to AccountsToPersons.AccountId??
x.MapRightKey("PersonId"); // <-- Person.Id to AccountsToPersons.PersonId??
x.ToTable("AccountsToPersons");
});
, sorgu aşağıdaki hata nedeniyle başarısız: "Geçersiz Sütun Adı 'Person_Id'"
Ancak Sorgu (from x in context.Persons select x).ToList();
'u çalıştırırken, hata alıyorum. Temel Yazılan sütunların dışında
, benim modeller bunlar onlara ekledi:
// In my Account Model, I also have this property:
public IList<Person> Persons { get; set; }
// In my Person Model, I also have this property:
public IList<Account> Accounts { get; set; } // <-- in the Person model
Ve rağmen Hesaplarımın sorgu geçer ve saha bilgisini olsa bile, Persons
alan her zaman boş olduğuna dikkat edin ben Eminim benim AccountsToPersons
tablosumda bağlantılar var.
Bu standart EF adlandırma con gibi görünüyor temel anlaşma-. Bunu denedin mi? Çalışıyor mu?'Hesap' ve 'Kişi' neye benziyor? – Jasen
@Jasen İlk başta çalıştığımı düşündüm, ancak testim sadece modeli yaratırken. İlk LINQ'umu çalıştırdım ve yukarıdaki ek bilgilerle başarısız oldu. – Suamere
Varolan birleştirme tablonuzun _AccountId_ ve _PersonId_ sütunları varsa, bu akıcı eşleme doğru görünüyor. Hata başka bir yerde yatar. – Jasen