SORU
4 Kasım 2011, Cuma


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
9 Kasım 2011, ÇARŞAMBA


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Adam Outler

    Adam Outler

    19 EKİM 2006
  • RickardRick

    RickardRick

    9 Mart 2007
  • Study with Substance P

    Study with S

    31 Mayıs 2008