11

我在 Visual Studio 2010 中使用 MVC3、C# 4.0 和实体框架。我正在从数据库生成我的 edmx 和设计的.cs 文件。然后,我从 Designer.cs 文件中的实体生成接口,作为我的 nLayer 结构的一部分。

原始代码是

public partial class DataEntrySummary : EntityObject

然后变成

public partial class DataEntrySummary : EntityObject, Mb.Interface.IDataEntrySummary

我担心的是,当数据库更改(它会)并且我重新生成 edmx 文件时,我将丢失所有接口定义。

有没有更好的方法来实现相同的结果而不必重新生成接口。

谢谢

4

3 回答 3

20

EF 使用partial关键字生成类,以便您可以通过创建另一个文件并将接口特定的东西放在那里来为实体添加额外的功能。

public partial class DataEntrySummary : Mb.Interface.IDataEntrySummary
{
}

EF 更新模型时,这些文件不会受到影响。

于 2012-09-10T09:42:54.810 回答
2

你正朝着正确的方向前进。但是为了在每次 EDMX 刷新后保留接口,您需要自定义 T4 文件。

您可以查看来自https://entityinterfacegenerator.codeplex.com/的自定义 T4 文件, 它们为您的每个类生成 1 个接口,以便您可以轻松地分别模拟和测试它们。

因此,每次添加新表或字段时,您都可以简单地执行其 T4 模板以及 Microsoft 提供的用于生成 EF 类型的模板。

问候。

于 2014-04-29T15:04:18.527 回答
1

我认为在模型更新时创建一个事件,以便每次模型更新时都会添加接口定义。

另一种选择是创建一个实现特定接口并从模型继承的代理类。

于 2012-09-10T09:25:19.860 回答