[英]Getting every related entity in Entity Framework 6.2
public class Service
{
public int Id { get; set; }
public string Title { get; set; }
}
public class Store
{
public int Id { get; set; }
public virtual Service Service { get; set; }
}
public class Product
{
public int Id { get; set; }
public virtual Service Service { get; set; }
}
public class Operation
{
public int Id { get; set; }
public virtual Service Service { get; set; }
}
我有一個在其他實體中使用的Service
實體。 我想獲取所有使用Service
實體。
我的意思是獲取使用Service
的實體的列表,如下所示:
public virtual Service Service { get; set; }
在實體框架中可能嗎?
您可以通過反射來完成。 近似代碼,其中Assembly.GetExecutingAssembly()
可以用適當的Assembly / Assemblies替換:
var types = Assembly.GetExecutingAssembly().GetTypes()
.Where(x => x.GetProperties().Any(y => y.PropertyType == typeof(Service)))
.ToList();
(instance.GetType().GetProperties().Where(y => y.PropertyType == typeof(DbSet<Service>))
.First().GetValue(instance) as DbSet<Service>).Add(newItem);
添加導航ServiceId並使用它。 您可能正在顯示代碼的簡化,但是我會做這樣的事情:
public class Service
{
public int Id { get; set; }
public string Title { get; set; }
public List<ObjectUsingService> MyServiceUsers {get; set;
}
public ObjectUsingService
{
public int? ServiceId {get; set;}
public virtual Service Service { get; set; }
}
public class Store : ObjectUsingService
{
public int Id { get; set; }
}
//...
然后從另一端查詢EF:
_context.Services.Include(s => s.MyServiceUsers).Where(s => s.MyServiceUsers.Any())
一級繼承在EF中是可行的,但要當心,如果您過度使用它,可能會變得凌亂。 沒有通過這種方式連接它們的問題還算不錯,您只需要分開請求每個實體。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.