[英]C# Entity Framework with Linq.Dynamic: ORDER BY COALESCE
我有兩個表dbo.Foo
和dbo.Bar
。
dbo.Foo
兩個重要屬性:
ID
(主鍵) OwnerID
(同一表的外鍵(ID)) dbo.Bar
三個重要屬性:
ID
(主鍵) FooID
( dbo.Foo
(ID)的外鍵) FooOwnerID
( FooOwnerID
外鍵dbo.Foo
(ID)也是) 在dbo.Bar
,必須設置FooID
或FooOwnerID
。 下面,我創建了一個圖形來顯示結構:
我的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.