在 EF Code first 文档和示例中,您会经常看到使用 partial
修饰符定义的类和方法。 For example , 以下
public partial class Department
{
public int DepartmentID { get; set; }
public DepartmentNames Name { get; set; }
public decimal Budget { get; set; }
}
我了解 C# 编译器对 partial
关键字的一般用法。但是,我经常看到这些示例没有应用该功能(即,该类永远不会在其他地方重新打开)。
在其他示例中,我还看到了方法上的 partial
修饰符。
这些修饰符在 EF Code First 上下文中是否具有某些特殊含义?谁能帮助我了解发生了什么?
最佳答案
鉴于 EF 使使用 POCO 变得非常容易,这使得它在分离组件和片段方面变得灵活。例如,定义模型的部分:
public partial class PurchaseOrder
{
public Int32 ID { get; set; }
public String CustomerName { get; set; }
public Double InvoiceAmount { get; set; }
public virtual ICollection<PurchaseOrderItem> Items { get; set; }
}
然后在别处应用业务逻辑:
public partial class PurchaseOrder : IValidatableObject
{
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
// ...
}
}
也许还可以在另一个地方扩展它的功能:
public partial class PurchaseOrder
{
public void AddItem(PurchaseOrderItem item)
{
// ...
}
}
虽然作为@E.J. Brennan 提到,它们更有可能是从 T4 模板生成的。这意味着您在生成的文件中所做的任何操作都将在每一代中被删除;但是,如果您单独留下生成的项目,您仍然可以扩展它(就像我用 IValidatableObject
或其他方法展示的那样)而不用担心您的更改是否会丢失。
关于entity-framework - 为什么在 EF Code First 中经常无法解释地使用部分修饰符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17686120/