andrea
andrea

Reputation: 1358

The specified type member "" is not supported in LINQ to Entities.

I'm having a problem with LINQ

var operations = (from c in dCAPPEntities.CIC_OPERAZIONI
                                where c.CD_CIC_PRODUZIONE == 15835 && !(from s in dCAPPEntities.CIC_SEQUENCE where s.CD_CIC_PRODUZIONE==15835 select s.CD_CIC_OPERAZIONE).Contains(c.CD_CIC_OPERAZIONI) select new { c }).GroupBy(i=>i.c.CD_CIC_OPERAZIONI, i=> new Alternative1{ State=0, Iden=i.c.Iden});

when I execute this query I get the following error: The specified type member 'Iden' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.

if I write Iden="" in the query it works, so I have no idea why I got the error.

I also add the code of some classes I used:

public interface IAlternative
{
    string Iden { get; }

    int State { get; set; }

}

partial class that extends the table

 public partial class CIC_OPERAZIONI : IAlternative
{
public string Iden
    {
        get
        {
            return AFCDOPER + "\r" + AFDSOPER;
        }
    }

    private int _state = 0;
    public int State
    {
        get { return _state; }
        set
        {
            _state = value;
        }
    }
}

and the last class i think can be useful to understand the problem

public class Alternative1 : INotifyPropertyChanged, IAlternative
{
    public event PropertyChangedEventHandler PropertyChanged;

    #region IAlternative Members

    public string Iden { get; set; }


    public int State { get; set; }

Upvotes: 0

Views: 503

Answers (1)

user743382
user743382

Reputation:

c is a CIC_OPERAZIONI. CIC_OPERAZIONI.Iden is not an entity member or navigation property, it's a computed property with a value that depends on other properties. EF doesn't support that: your query doesn't actually end up creating CIC_OPERAZIONI objects, so there is no way to have CIC_OPERAZIONI member functions or properties get called. Depending on the definition of the other properties, it may or may not work if you expand it inline:

[...].GroupBy(
    i=> i.c.CD_CIC_OPERAZIONI,
    i=> new Alternative1
        {
            State = 0,
            Iden = i.c.AFCDOPER + "\r" + i.c.AFDSOPER
        })

If it doesn't work, it's probably because AFCDOPER or AFDSOPER isn't an entity member either, and you need to do the same with those other properties.

Upvotes: 1

Related Questions