0

我在想有什么方法可以确定 CodeFirst 中属性加载的顺序,例如我有一个如下所示的类:

public Class
{
 public string Propert1{get;set;}
 public string Propert2{get;set;}
 public List<string> PropertList{get;set;}
}

而且我需要让EF在property1之前加载ProprtyList!(因为我在Property1_Changed上操作ProprtyList值)。

4

2 回答 2

0

然后,您可以将 PropertList 声明为只读。

public Class
{
 public string Propert1{get;set;}
 public string Propert2{get;set;}
 public List<String> PropertList{
       get{ 
          return genaratePropertyListFromProperty1();
       }
 }
}

此处的 prpertyList 仅在被访问时才会被填充。

于 2013-01-07T08:13:59.447 回答
0

一个属性应该就是:一个属性。即你得到或设置它,没有别的,没有副作用。我知道即使是一些违反此规则的 .Net 类,但它仍然是一个非常健康的原则。另一个原则是设置对象的属性的顺序无关紧要。这是因为设置任何单个属性都应该使对象处于有效状态。

所以考虑你的Class对象,EF 实现它的方式,是有效的。然后就可以开始修改了。如果您想以同时更改多个属性的方式修改对象,您应该通过调用具有描述性名称的方法来执行此操作,而不是通过设置一个属性并静默更改其他属性。

如果您想要一个基于 显示不同内容的列表 PropertList,请创建一个只读(未映射)属性或GetXyz()生成更改内容的方法(无需修改PropertList!)并返回。

于 2013-01-07T21:03:35.907 回答