我开始使用模型优先开发实体框架4。我正在构建一个简单的WPF演示应用程序来学习框架。我的应用程序有两个实体,Topic和Note。主题是讨论主题;它具有Title,Text和DateRevised属性。主题还具有Notes集合属性。 a Note具有DateCreated和Text属性。
我使用EF4为应用程序创建EDM和数据存储。现在我需要为实体添加一点智能。例如,Topic.Text属性的属性设置器需要更新Topic.DateRevised属性,而Note需要在实例化时设置其DateCreated属性 - 非常简单的东西。我假设我无法直接修改生成的类,因为如果重新生成实体,我的代码将会丢失。
这是我可以通过修改EF4用来生成实体的T4模板来实现的吗?换句话说,是否可以修改T4模板以将我的代码添加到它生成的实体中以执行这些任务?你能给我一个很好的教程或如何开始的解释吗?
到目前为止,我发现的大部分内容都是关于如何将tt文件添加到EDM,所以我可以这样做。正如我所描述的那样,假设可以使用T4模板来定制生成的实体,我正在寻找的是一种可用于进入下一级别的资源。谢谢你的帮助。
答案 0 :(得分:2)
您可以在没有T4的情况下使用部分类和部分方法执行此操作。
每个EF属性都有一个部分OnPropertyNameChanged
方法。如果在部分类中实现该功能,则可以添加所需的行为,并且在更新时不会丢失更改。
所以你要添加一个新文件,比方说Topic.cs
。在那里,你会写:
namespace MyNamespace
{
public partial class Topic
{
partial void OnTextChanged()
{
this.DateRevised = DateTime.Now;
}
}
}