我有這種模型。
public class Person
{
Id { get; set; }
public string Name { get; set; }
// This has jsonbType
public List<long> FriendsIds { get; set; }
}
modelBuilder.Entity<Person>().Property(e => e.FriendsIds)
.HasColumnType("jsonb")
.HasConversion(
v => JsonConvert.SerializeObject(v ?? new List<long>()),
v => JsonConvert.DeserializeObject<List<long>>(v));
我想撰寫查詢以獲取具有特定朋友的人。例如這樣的:
var friendIds = new List<long>;
var people = await Context.People.Where(x => x.FriendsIds.Intersect(friendIds).Any()).ToListAsync();
我該怎么做?
uj5u.com熱心網友回復:
為什么你使用相交?
我想撰寫查詢以獲取具有特定朋友的人 -一對多關系
班級設計
// One-To-Many Relatioship
public ICollection<long> FriendsIds { get; set; }
// 和來自 Person-To-FriendsIds 的一對多關系
modelBuilder.Entity<Person>()
.WithMany(c => c.FriendsIds) // One-to-Many
.HasForeignKey(f => f.FriendsIds_Id); // Foreign Key
uj5u.com熱心網友回復:
我有更復雜的表結構 - 然后使用物件
public class ResourceRoot
{
public string _id { get; set; }
public object FriendsIds { set; get; }
}
物件更適合任何復雜的結構。
uj5u.com熱心網友回復:
您可以使用 JsonContains 函式。
var ids = new long[] {1,2,3 };
var friends = _context.Persons.Where(p => EF.Functions.JsonContains(p.FriendsIds, ids)).ToArray();
更多資訊在這里
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/439511.html
