簡體   English   中英

一對多流利的實體框架

[英]One to Many Fluent Entity Framework

每隔半小時,將收到來自移動設備的請求。 可以在設備表中驗證移動設備,然后將記錄添加到Ping表中。 使用實體Franmework將相同的表映射到DB。

誰能告訴我如何將Device.Id(主鍵)映射到Ping.IdDevice(外鍵),則使用Fluent Api可以實現一對多的關系。

public class Ping 
{
    public long Id { get; set; }
    public long IdDevice { get; set; }
    public string Request { get; set; }
    public string Response { get; set; }
    public int RspCode { get; set; }
    public DateTime CreatedDateTime { get; set; }
}

    public class Device {
    public long Id { get; set; }
    public string Uid { get; set; }
    public Type Type { get; set; }
    public Status Status { get; set; }
}

        protected override void OnModelCreating(DbModelBuilder modelBuilder) {

        modelBuilder.Entity<Device>().HasKey(d => d.Id);
        modelBuilder.Entity<Device>().Property(d => d.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);


        modelBuilder.Entity<Device>().Property(d => d.Uid).HasMaxLength(8);
        modelBuilder.Entity<Device>().HasRequired(d => d.Uid);

        modelBuilder.Entity<Ping>().HasKey(p => p.Id);
        modelBuilder.Entity<Ping>().Property(p => p.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);



        base.OnModelCreating(modelBuilder);
    }

您可以嘗試在Ping類中為Device添加導航屬性,如下所示:

public class Ping
{
    public long Id { get; set; }
    public long IdDevice { get; set; }
    public virtual Device Device { get; set; }//Newly added
    public string Request { get; set; }
    public string Response { get; set; }
    public int RspCode { get; set; }
    public DateTime CreatedDateTime { get; set; }
}

然后在Device類中為Ping添加導航屬性,如下所示

public class Device
{
    public long Id { get; set; }
    public string Uid { get; set; }
    public Type Type { get; set; }
    public Status Status { get; set; }
    public virtual List<Ping> Pings { get; set; } //Newly added
}

最后在OnModelCreating中添加以下映射:

modelBuilder.Entity<Device>().HasMany(d => d.Pings).WithRequired(p => p.Device).HasForeignKey(p => p.IdDevice);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM