C# 从实体框架数据库生成接口第一个自动生成的代码

C# 从实体框架数据库生成接口第一个自动生成的代码,c#,entity-framework,separation-of-concerns,C#,Entity Framework,Separation Of Concerns,我在VisualStudio2010中使用MVC3、C#4.0和实体框架。我正在从数据库生成edmx和Designed.cs文件。然后,我将从Designer.cs文件中的实体生成接口,作为nLayer结构的一部分 原始代码是 public partial class DataEntrySummary : EntityObject 然后变成 public partial class DataEntrySummary : EntityObject, Mb.Interface.IDataEntry

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

原始代码是

public partial class DataEntrySummary : EntityObject
然后变成

public partial class DataEntrySummary : EntityObject, Mb.Interface.IDataEntrySummary
我担心的是,当数据库发生更改(而且会发生更改)并且我重新生成edmx文件时,我将丢失所有接口定义

是否有更好的方法实现相同的结果,而不必重新生成接口


谢谢

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


另一个选项是创建一个代理类,该类实现一个特定接口并从模型继承。

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

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

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

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

您可以从中查看定制的T4文件 它们为每个类生成一个接口,以便您可以轻松地分别模拟和测试它们

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


问候。

很好,我完全浏览了
部分
关键字,甚至没有意识到……谢谢你,可惜太晚了,因为我们现在已经开始先编写代码了。如果有进一步的需要,我一定会再次审查。当然。谢谢你查看这个项目。希望它能帮助像我们这样不得不决定使用哪种技术的人。IMO code first仅适用于新项目。首先,数据库似乎更实用。这就是为什么我构建这个项目是为了帮助那些没有能力先编写代码的人。