【发布时间】:2018-04-12 07:31:52
【问题描述】:
我有一个 C# 实体,它首先通过数据库自动生成:
public partial class Zone
{
public Guid LocationId {get; set;}
...
}
我需要做的是运行一个函数,Process() 每当 LocationId 改变时。现在通常我会更改 setter 并完成工作,但是因为这是首先通过数据库自动生成的,所以 “如果重新生成代码,对文件的任何手动更改都将被覆盖。”
这里最好的方法是什么?
目前的想法是创建一个新的局部类来做这样的事情:
public partial class Zone
{
private Guid _pendingLocationId
public Guid PendingLocationId {
get { return _pendingLocationId }
set {
Guid updatedLocation = Process(value) ?? value;
_pendingLocationId = updatedLocation;
locationId = updatedLocation;
}
}
}
请注意;不幸的现实是,我们在这个阶段将新框架或库集成到应用程序中的可能性可能为零。
响应可能的duplicate标志;除非我读错了,否则这将需要我们将所有 Zone 引用重新映射/封装到一个新类中,不仅将其推送到所有视图,而且还要编辑许多 linq 查询等。如果有人能找出原因将是我自己建议的解决方案的首选解决方案,请告诉我。
【问题讨论】:
-
首先,这个问题很可能会被标记为
opinion based。除此之外,为生成的实体创建部分类是处理这些东西的非常常见的方法,所以我认为这是解决这个问题的可行解决方案。 -
@Zze 该链接上有用的东西,但它没有提到我也推荐的 PostSharp
标签: c# entity-framework