CodeFirst EF4.Eski veritabanı Karşı - Çokluk çatışmalar 1 MVC
Ben bu karışımı olursa olsun, bana hataları veriyor. Bu hataları alıyorum gibi aşikar bir şey kaçırıyorum gibi bir his var içimde.
Bir veya daha fazla doğrulama hataları model oluşturma sırasında tespit edilmiştir:
Sistem.Veri.Erozyon.EdmAssociationType: : Çokluk Rolü başvuru kısıtlaması ile çakışan '' ilişki 'Venue_Courses'. Venue_Courses_Source Bağımlı Rolü özellikleri tüm null olmayan olduğundan, Asıl Rolü çeşitliliği olmalıdır '1'.
Sistem.Veri.Erozyon.EdmAssociationEnd: : Çokluk Rolü geçerli değil '' ilişki 'Venue_Courses'. Venue_Courses_Target Bağımlı Rolü kilit özelliklerine başvuruyor, üst Bağımlı Rolü çokluğu bağlı 1 olmalıdır.
Bir Ders sadece bir mekan olabilir, mekanları birçok kurs tarafından kullanılabilir
public class Course
{
[Key]
public virtual int Id { get; set; }
public string Title { get; set; }
public DateTime StartDate { get; set; }
public int VenueId { get; set; }
public virtual Venue Venue { get; set; }
}
public class Venue
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Course> Courses { get; set; }
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
#region Courses
//Table Alias
modelBuilder.Entity<Course>().ToTable("DBSCHEMA.TR_COURSES");
//Keys
modelBuilder.Entity<Course>().HasKey(c => c.Id);
//Joins
//Join to Venues
modelBuilder.Entity<Course>().HasOptional(c => c.Venue);
//Fields
modelBuilder.Entity<Course>().Property(c => c.Id).HasColumnName("COURSE_ID");
modelBuilder.Entity<Course>().Property(c => c.Title).HasColumnName("CR_TITLE");
modelBuilder.Entity<Course>().Property(c => c.StartDate).HasColumnName("START_DATE");
modelBuilder.Entity<Course>().Property(c => c.VenueId).HasColumnName("VENUE_ID");
#endregion
#region Venues
//Table Alias
modelBuilder.Entity<Venue>().ToTable("DBSCHEMA.VENUES");
//Keys
modelBuilder.Entity<Venue>().HasKey(v => v.Id);
//Joins
modelBuilder.Entity<Venue>().HasMany(venue => venue.Courses);
//Fields
modelBuilder.Entity<Venue>().Property(v => v.Id).HasColumnName("VENUE_ID");
modelBuilder.Entity<Venue>().Property(v => v.Name).HasColumnName("VENUE_NAME");
#endregion
}
CEVAP
Bu hala zaman yardımcı olur umarım. Ayrıca aynı problemim vardı ve hatamı noktaya kadar neredeyse bir saat boyunca rahatsız oldu.
Asıl sorun Course.Venue
ilişki isteğe bağlı olarak beyan üzerine akıcı API), ancak Kimlik beyanı Course.VenueId
zorunlu, bu yüzden de Venueİd isteğe göre değişiyor
public int? VenueId { get; set;}
ya akıcı API zorunlu ilişkisini değişim ve OnModelCreating değiştirdin sonra iyi çalışmalıdır.
Nasıl veritabanı girdileri eşzamanlı d...
Git çatışmalar düzeltme birleştirme?...
Nasıl veritabanı indeksleme çalışır?...
Paketi indir eski sürüm nuget ile...
Nasıl SQLite veritabanı dosyası tablol...