我想通过我的EF实体代码的第一个对象的所有属性循环。我只想要我定义的属性。但是,当我这样做时,它包括一个属性 “RelationshipManager”,我真的不想要。EF对象的GetProperties:需要忽略“RelationshipManager”
这里是对象:
public class SchoolYear
{
[Key]
public virtual int SchoolYearId { get; set; }
public virtual string SchoolYearName { get; set; }
}
这里是代码:
public static string plistFromObject<T>(List<T> data)
{
string plist = "";
plist = plist + "<array>\r\n";
foreach (var item in data)
{
// I want to exclude "relationshipmanager"
List<string> props = item.GetType().GetProperties(BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Instance).Select(p => p.Name).ToList();
plist = plist + "<dict>\r\n";
foreach (var prop in props)
{
var val = item.GetType().GetProperty(prop).GetValue(item, null).ToString();
plist = plist + "<key>" + prop + "</key>\r\n";
plist = plist + "<string>" + System.Web.HttpUtility.HtmlEncode(val) + "</string>\r\n";
}
plist = plist + "</dict>\r\n";
}
return plist;
}
通话
[WebMethod]
public string GetSchoolYears()
{
var db = new MyEntities();
var results = (from i in db.SchoolYears
select i).ToList();
return Library.Common.plistFromObject(results);
}
你的物体的其余部分在哪里? 'RelationshipManager'在哪里定义?这将是一个很大的线索。 –
另外,请自己做个大忙,不要使用字符串操作来构建XML。改为使用LINQ to XML。如果你坚持字符串操作,至少应该使用'StringBuilder'。 –
我不知道relationshipmanager在哪里定义。它是EF的一部分吗?或对象的默认属性?谢谢你的建议。我将切换到XML或使用字符串生成器。 – Arcadian