Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 查询EF以使用自定义实体从外键获取值<;T>;_Sql_Asp.net Mvc_Entity Framework - Fatal编程技术网

Sql 查询EF以使用自定义实体从外键获取值<;T>;

Sql 查询EF以使用自定义实体从外键获取值<;T>;,sql,asp.net-mvc,entity-framework,Sql,Asp.net Mvc,Entity Framework,我刚刚使用EF,我不知道如何解决一个简单的选择问题,我有两种实体类型,如: IEnumerable<T> Listar(Expression<Func<T, bool>> filter = null, Func<IQueryable<T>, IOrderedQueryable<T>> orderBy = null, string includeProperties = "")

我刚刚使用EF,我不知道如何解决一个简单的选择问题,我有两种实体类型,如:

 IEnumerable<T> Listar(Expression<Func<T, bool>> filter = null,
            Func<IQueryable<T>, IOrderedQueryable<T>> orderBy = null,
            string includeProperties = "");
Tipos Carga表格:

+----+--------+--------------+-----------+
| ID | Nombre | Descripcion  | EstatusID | 
+----+--------+--------------+-----------+
| 1  | store  | description1 | 2         |  
+----+--------+--------------+-----------+
| 2  | oxo    | description2 | 2         | 
+----+--------+--------------+-----------+
我得到的价值观如下:

     var tc = _tipoCargaService.Listar(c => c.EstatusID.Equals(estatusid));
 List<TipoCargaViewModel> tiposcargas = new List<TipoCargaViewModel>();

                    foreach (var item in tc)
                    {
                        var carga = new TipoCargaViewModel()
                        {
                            ID =  item.ID,
                            Nombre = item.Nombre,
                            Descripcion = item.Descripcion,
                            EstatusID = item.EstatusID
                        };
                        tiposcargas.Add(carga);
                    }
然后像这样称呼estatus:

var estatus = _estatusService.Cargar(x => x.Nombre.Where(ID == cargatc.EstatusID));
但是我不能等于
Nombre.Where(ID==cargatc.EstatusID)


我获取的
无法解析符号ID
,并被标记为红色,与
cargatc.EstatusID的相同。关于

您已经通过
includeProperties
param将功能烘焙到了方法中,至少表面上是这样。您只需在此处添加相关实体:

var tc = _tipoCargaService.Listar(c => c.EstatusID.Equals(estatusid), includeProperties: "Estatus");
然后:

当然,这需要在
TiposCarga
实体类上有一个导航属性:

public Estatus Estatus { get; set; }

您已经通过
includeProperties
param将功能烘焙到了方法中,至少看起来是这样。您只需在此处添加相关实体:

var tc = _tipoCargaService.Listar(c => c.EstatusID.Equals(estatusid), includeProperties: "Estatus");
然后:

当然,这需要在
TiposCarga
实体类上有一个导航属性:

public Estatus Estatus { get; set; }

除非我误解了你的问题,否则你真的不需要虚拟机,你只需要确保你的导航属性完好无损,这会让你的生活更轻松

  • 验证是否在EF中正确设置了导航属性:

    public class Estatus
    {
        public int ID { get; set; }
        public String Nombre { get; set; }
        public virtual ICollection<TipoCarga> TipoCargas { get; set; }
    }
    
    public class TipoCarga
    {
        public int ID { get; set; }
        public String Nombre { get; set; }
        public String Descripcion { get; set; }
        public virtual Estatus Estatus { get; set; }
    }
    
    公共类资产
    {
    公共int ID{get;set;}
    公共字符串Nombre{get;set;}
    公共虚拟ICollection TipoCargas{get;set;}
    }
    公共类TipoCarga
    {
    公共int ID{get;set;}
    公共字符串Nombre{get;set;}
    公共字符串描述符{get;set;}
    公共虚拟资产{get;set;}
    }
    
  • 选择时,使用“包含关键字”加载对象和链接对象,以便将其包含在返回中。如果不执行此操作,延迟加载将生效,并且链接对象将不会加载(在数据上下文之外尝试访问链接对象属性时,将出现错误):

    public List getwhere(int-estatusid)
    {
    使用(DB context=new DB())
    {
    返回context.TipoCargas.Include(“Estatus”).Where(a=>a.Estatus.ID==estatusid.ToList();
    }
    }
    

  • 除非我误解了你的问题,否则你并不需要虚拟机,你只需要确保你的导航属性完好无损,这样你的生活就会轻松得多

  • 验证是否在EF中正确设置了导航属性:

    public class Estatus
    {
        public int ID { get; set; }
        public String Nombre { get; set; }
        public virtual ICollection<TipoCarga> TipoCargas { get; set; }
    }
    
    public class TipoCarga
    {
        public int ID { get; set; }
        public String Nombre { get; set; }
        public String Descripcion { get; set; }
        public virtual Estatus Estatus { get; set; }
    }
    
    公共类资产
    {
    公共int ID{get;set;}
    公共字符串Nombre{get;set;}
    公共虚拟ICollection TipoCargas{get;set;}
    }
    公共类TipoCarga
    {
    公共int ID{get;set;}
    公共字符串Nombre{get;set;}
    公共字符串描述符{get;set;}
    公共虚拟资产{get;set;}
    }
    
  • 选择时,使用“包含关键字”加载对象和链接对象,以便将其包含在返回中。如果不执行此操作,延迟加载将生效,并且链接对象将不会加载(在数据上下文之外尝试访问链接对象属性时,将出现错误):

    public List getwhere(int-estatusid)
    {
    使用(DB context=new DB())
    {
    返回context.TipoCargas.Include(“Estatus”).Where(a=>a.Estatus.ID==estatusid.ToList();
    }
    }
    
  • public class Estatus
    {
        public int ID { get; set; }
        public String Nombre { get; set; }
        public virtual ICollection<TipoCarga> TipoCargas { get; set; }
    }
    
    public class TipoCarga
    {
        public int ID { get; set; }
        public String Nombre { get; set; }
        public String Descripcion { get; set; }
        public virtual Estatus Estatus { get; set; }
    }
    
    public List<TipoCarga> GetWhatever(int estatusid)
    {
        using (DB context = new DB())
        {
            return context.TipoCargas.Include("Estatus").Where(a => a.Estatus.ID == estatusid).ToList();
        }
    }