简体   繁体   中英

Not mapping ont-to-one Entity Framework FluentApi

Setting in ReminderSetting not mapping. Why? I try get list ReminderSetting, but he not mapping nested object Setting. Please, help me.

[Table("ReminderSetting")]
public class ReminderSetting
{

    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    public int SettingId { get; set; }

    public Setting Setting { get; set; }

    public string Login { get; set; }

    public bool Value { get; set; }
}

[Table("Settings")]
public class Setting
{        
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    public string Title { get; set; }
}

Not working

modelBuilder.Entity<Setting>();
        modelBuilder.Entity<ReminderSetting>()
            .HasRequired(x => x.Setting)
            .WithMany()
            .HasForeignKey(k => k.SettingId); 

Not working

modelBuilder.Entity<Setting>();
        modelBuilder.Entity<ReminderSetting>()
            .HasRequired(x => x.Setting)
            .WithRequiredPrincipal();

I think the following should work for creating the one-to-one relationship between ReminderSettings and Settings:

[Table("ReminderSetting")]
public class ReminderSetting
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    [ForeignKey("Setting")]
    public int SettingId { get; set; }

    public string Login { get; set; }
    public bool Value { get; set; }

    public virtual Setting Setting { get; set; }
}

[Table("Settings")]
public class Setting
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    public string Title { get; set; }

    public virtual ReminderSetting ReminderSetting { get; set; }
}

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<ReminderSetting>()
        .HasKey(r => r.SettingId);
    modelBuilder.Entity<ReminderSetting>()
                .Property(r => r.SettingId)
                .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
    modelBuilder.Entity<ReminderSetting>()
                .HasRequired(r => r.Setting)
                .WithRequiredDependent(s => s.ReminderSetting);

    base.OnModelCreating(modelBuilder);
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM