ありがとうございました。 include()
メソッドエンティティフレームワーク6を使用すると、私に起こった状況についてちょっと混乱します。 私が理解しているように、インクルードメソッドは、囲まれたオブジェクトがNULL
の場合はLEFT JOIN
、オブジェクトが一致する場合はOUTER JOIN
として機能します。Include()がLEFT JOINとして機能しません(Entity Framework 6)
私は発生した例を渡すので、何が起こったのかを理解する手助けをします。
私は私のテーブルに次のモデルがあります:
以下public class Booking
{
[Key]
public int ID{ get; set; }
public string Description{ get; set; }
public decimal Amount{ get; set; }
public decimal AmoutPaid{ get; set; }
public DateTime? Checkin { get; set; }
public DateTime? Checkout { get; set; }
[ForeignKey("SourceBooking ")]
public int SourceBookingId { get; set; }
public SourceBooking SourceBooking { get; set; }
}
public class SourceBooking
{
[Key]
public int ID{ get; set; }
public string Name{ get; set; }
public decimal CommissionFee{ get; set; }
}
はDbContext
です:
public class BookingContext:DbContext
{
public BookingContext():base("bookingConnection")
{
}
public DbSet<Booking> Bookings{ get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<SourceBooking>().ToTable("sourcebookings", "public");
modelBuilder.Entity<Booking>().ToTable("bookings", "public");
}
}
明らかではないが、状況は次のコードブロックを使用することで発生しました:
var db = new BookingContext();
var bookings = db.Bookings.Include (b => b.SourceBooking);
私は、結果が記録されなかったSourceBooking
がNULL
である場合、LEFT JOIN
が作成されます。
誰かが私にこのことを説明し、この状況に私に可能な解決策を教えてもらえますか?
ありがとうございました。
をNULLABLEするFKプロパティの種類を変更するには、 '[のForeignKey(「SourceBookingId」)]' SourceBookingプロパティ上記 – OrcusZ
オーケーを置く必要がありますが、それはやりました私の問題を解決しない。 –
Fluent APIを使用してこの同じ関係を作るにはどうすればよいですか? –