【发布时间】:2016-05-21 00:46:55
【问题描述】:
我对 Entity Framework 和 MVC 非常陌生(并且还在学习 C#),所以如果我的某些术语不正确,请原谅我。
简单地说,我已经在我的 MVC 项目中安装了 Entity Framework,我希望用它来创建一个 Web API 来提供一个 XML 记录列表。 Entity Framework 创建了我的实体类。
在我的控制器中,我可以使用以下代码获取 XML 列表:
public IEnumerable<Person> GetAllPersons()
{
IEnumerable<Person> person;
using (var context = new ContactsContext())
{
context.Configuration.ProxyCreationEnabled = false;
person = context.People.ToList();
}
return person;
}
这很棒。但是,如果我只想返回 Person 对象的某些属性怎么办?例如,如果我只需要 FirstName 和 LastName 属性怎么办?
我找到了一些使用类似
的例子person = (from p in context.People
select new { p.FirstName, p.LastName })
但这会带来问题。这样做意味着我的 IEnumberable 列表不再是 Person 类型的列表。如果我将类型更改为dynamic,它至少会编译,但这样做的问题是它没有成功显示在浏览器中,大概是因为 XML 反序列化器不再知道对象的结构是什么。
真的没有办法只返回我指定的对象的某些属性,同时仍然传达它实际上是我要返回的Person 对象的事实吗?而且,如果不是,我将如何以浏览器可以解释为 XML 的格式返回对象的某些属性?
【问题讨论】:
-
如果您只发送属性的子集,您将不再发送原始对象。创建您的服务返回的视图模型,然后可以将其序列化为 xml 或 json 或您选择的任何序列化格式。
-
所以这将是一种基于 Person 类的“派生类”?这就是我开始认为我需要的东西,但我不知道如何创建一个。
-
这将是一个完全独立于您的领域模型人员的单独类。
标签: c# xml asp.net-mvc entity-framework