[英]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.