在我的ASP MVC项目中,每当我向项目添加一个新表时,都会创建两个模型。一个在文本模板转换工具包(文件w / .tt
扩展名)下,另一个在一般Models
文件夹之外(这个似乎想要在结尾处默认为“1”)文件)。
每当对数据库进行更改时,似乎根据该表上数据库中当前存在的字段刷新.tt
文件下的所有模型。此外的文件是常规Models
文件夹,但保留原样。因此,我们将所有模型验证方法放在这些.cs
文件中(文件名末尾带有“1”)。
但是,在一个实例中,我需要从.tt
文件下的模型中删除一个字段,以便在另一个.cs
文件中执行验证。这是我执行的验证:
private string agentId;
//here, AgentId overrrides the field in the BankListAgentId.cs file,
//which MUST be commented out.
[DisplayName("Agent ID")]
public string AgentId
{
get { return agentId; }
set { agentId = this.scrubAgentId(value); }
}
有没有办法在此.cs
文件中指定此处的AgentId
字段(名称末尾带有“1”的文件)会覆盖AgentId field in the
。cs file found under the
。tt`文件?
答案 0 :(得分:0)
据我所知,无法做到。但是你可以做很少的技巧。
将您的财产名称更改为例如。 InternalAgentId并在EDMX中更改要保护的字段甚至是私有字段。然后在代码中引用InternalAgentId:
public string AgentId
{
get { return this.InternalAgentId; }
set { this.InternalAgentId = this.ScrubAgentId(value); }
}
如果您需要linq中的该属性,可以查看Microsoft Linq Translation
另一种方法是更改T4以生成部分方法并在生成的属性中调用它。我认为其中一个Entity Framework模板已经这样做了。