これが私のコードです-最初に、Attachment
クラス:
public class Attachment{
(...)
public int UserId { get; set; }
public virtual User Author { get; set; }
public int? BasicMedicalDataId { get; set; }
public virtual BasicMedicalData MedicalData { get; set; }
}
BasicMedicalData
クラスは次のとおりです。
public class BasicMedicalData{
(..)
public virtual ICollection<Attachment> Attachments { get; set; }
}
ご覧のとおり、Attachment
オプションで 1 つの接続BasicMedicalData
オブジェクトを持つことができます。
多くのオブジェクトBasicMedicalData
を持つことができます。Attachments
これらの行で
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
(..)
modelBuilder.Entity<Attachment>()
.HasOptional(u => u.MedicalData)
.WithMany()
.HasForeignKey(u => u.BasicMedicalDataId);
modelBuilder.Entity<Attachment>()
.HasRequired(a => a.Author)
.WithMany()
.HasForeignKey(a => a.UserId);
}
それは奇妙な移行を作成します:
public override void Up()
{
CreateTable(
"dbo.Attachments",
c => new
{
AttachmentId = c.Int(nullable: false, identity: true),
name = c.String(),
UserId = c.Int(nullable: false),
AddDate = c.DateTime(nullable: false),
BasicMedicalDataId = c.Int(),
del = c.Boolean(nullable: false),
BasicMedicalData_BasicMedicalDataId = c.Int(),
})
.PrimaryKey(t => t.AttachmentId)
.ForeignKey("dbo.Users", t => t.UserId, cascadeDelete: true)
.ForeignKey("dbo.PC_BasicMedicalData", t => t.BasicMedicalData_BasicMedicalDataId)
.ForeignKey("dbo.PC_BasicMedicalData", t => t.BasicMedicalDataId)
.Index(t => t.UserId)
.Index(t => t.BasicMedicalData_BasicMedicalDataId)
.Index(t => t.BasicMedicalDataId);
}
ここに問題があります。データベースBasicMedicalData_BasicMedicalDataId
に追加のフィールドが作成され、フィールドの遅延読み込みが無視されますBasicMedicalDataId
。
手動で ID を に入れるBasicMedicalData_BasicMedicalDataId
と、添付ファイルの遅延読み込みがうまく機能します。ただし、プロパティではないため、コードで値をここに入れることはできませんAttachments
..
それを解決する方法は?異なる名前で同じフィールドを 2 つ作成するのはなぜですか? フィールドでの遅延読み込みがBasicMedicalDataId
うまくいかないのはなぜですか?