我收到此错误:

Only parameterless constructors and initializers are supported in LINQ to Entities.

尝试运行此代码时(找到此代码here并使测试数据库可以使用):
XElement xml = new XElement("contacts",
                    from c in db.Contacts
                    orderby c.ContactId
                    select new XElement("contact",
                              new XAttribute("contactId", c.ContactId),
                              new XElement("firstName", c.FirstName),
                              new XElement("lastName", c.LastName))
                    );

其中db是自动创建的实体对象。关于如何使它起作用的任何想法?

最佳答案

我相信这是反对您使用XElement构造函数的事实,该构造函数在“select”子句中采用参数。由于XElement没有无参数的构造函数,因此您可能需要更改代码以选择匿名类型,然后在事后初始化XElement集合。

var els = from c in db.Contacts
          orderby c.ContactID
          select new { c.ContactID, c.FirstName, c.LastName };

var xml = new XElement("contacts",
    els.ToList()
       .Select(e => new XElement("contact",
                        new XAttribute("contactID", e.ContactID),
                        new XElement("firstName", e.FirstName),
                        new XElement("lastName", e.LastName))));

这未经测试,但希望能给您这个想法。我先执行EF查询,然后在其上调用ToList(),以便可以使用Linq to Objects而不是EF选择XElement集合。

关于entity-framework - “…parameterless constructors and initializers are supported…”错误是什么意思?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3464035/

10-12 02:58