簡體   English   中英

具有Linq.Dynamic的C#實體框架:按COALESCE排序

[英]C# Entity Framework with Linq.Dynamic: ORDER BY COALESCE

我有兩個表dbo.Foodbo.Bar

dbo.Foo兩個重要屬性:

  • ID (主鍵)
  • OwnerID (同一表的外鍵(ID))

dbo.Bar三個重要屬性:

  • ID (主鍵)
  • FooIDdbo.Foo (ID)的外鍵)
  • FooOwnerIDFooOwnerID外鍵dbo.Foo (ID)也是)

dbo.Bar ,必須設置FooIDFooOwnerID 下面,我創建了一個圖形來顯示結構:

數據模型

我的dbo.Bar模型類如下:

public class Bar
{
    public int ID { get; set; }
    public int FooID { get; set; }
    public int FooOwnerID { get; set; }

    public virtual Foo Foo { get; set; }
    public virtual Foo FooOwner { get; set; }
}

該表的映射(使用fluent-api)如下所示:

modelBuilder.Entity<Bar>().ToTable("Bar", "dbo");
modelBuilder.Entity<Bar>().HasKey(x => x.ID);
modelBuilder.Entity<Bar>().Property(x => x.FooID).IsRequired();
modelBuilder.Entity<Bar>().Property(x => x.FooOwnerID).IsRequired();
modelBuilder.Entity<Bar>().HasOptional(x => x.Foo).WithMany().HasForeignKey(x => x.FooID);
modelBuilder.Entity<Bar>().HasOptional(x => x.FooOwner).WithMany().HasForeignKey(x => x.FooOwnerID);

這可行。 但是我想讓FooOwner成為Foo的實際所有者,而不是如果只設置了FooID則為null 有人知道如何執行此操作嗎?

背景

我正在使用DataTables在視圖中顯示數據。 要訂購商品,DataTables Foo.ID順序發送列名(例如Foo.ID )。 我正在使用Linq.Dynamic動態排序結果集。 訂單字符串如下所示: Foo.ID asc, PropertyOfBar desc

有人知道如何執行此操作嗎?

沒有內置的。 但是您始終可以使用方法或NotMapped屬性

例如

public Foo GetFooOwner() => FooOwner??Foo.Owner;

暫無
暫無

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

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