【问题标题】:EntityFramwork generating Interfaces for MEF实体框架为 MEF 生成接口
【发布时间】:2012-12-25 16:37:08
【问题描述】:

我正在根据数据库表构建一些构建块。

所以我创建了一个基于 EDMX“模板”的 UsersManager 和一个 ValidationManager。

我真的很想将这两个组件与 MEF 松散耦合。但因此我需要创建 ValidationManager 中公开的实体对象的接口。 有没有一种简单的方法来创建这些接口,这样我仍然可以使用 EDMX 生成的类?

谢谢, 保罗

【问题讨论】:

    标签: entity-framework c#-4.0 interface mef edmx


    【解决方案1】:

    使用带有Product 表的数据库示例,这就是您要实现的目标......

    但仍使用生成的实体类(使用标准 EF 生成器或其他某种 POCO 生成器)。

    我不确定 - 正如你提到的 MEF,我认为它没有直接关系。

    生成的实体类是部分类,允许您扩展生成的类,在这种情况下,您希望扩展该类以实现接口。

    假设下面的接口将用于引入抽象层...

        public interface IEntity {
            public bool IsDeleted { get; set; }
        }
    

    创建一个新的类文件并扩展Product 类...

        public partial class Product : IEntity {
            public bool IsDeleted {
                get {
                    throw new NotImplementedException();
                }
                set {
                    throw new NotImplementedException();
                }
            }
        }
    

    您现在已经使用部分类自定义代码扩展了您生成的实体Product - 您可以通过 EF 正常使用它。

    现在,您的UserManagerValidationManager 类不再硬引用Product,而是只引用IEntity

    如果我不明白这个问题,请提供更多详细信息,说明您到底想要做什么。

    【讨论】:

    • 谢谢你的回答,但我想我没有说清楚:)
    • 感谢您的回答,但我想我没有说清楚 :) ValidationManager 是一个类,它消耗 2 个部分类 Validation 和 ValidationCode,这两个表都在数据库中。与 UserManager 一样,它由 7 个表组成:) 在 ValidationManager 中,生成了部分类“验证”。从这个类中,我希望在 ValidationManager 和 UserManager 中都有一个单独的硬链接库中的接口。这更有意义吗?
    • 另外,我错过了一些东西......部分类能够被“接口”。所以我重构了 Validation 和 ValidationAction 的接口,将接口放在类中:public partial class Validation:EntityObject,IValidation 并将它们移到一个单独的项目中。现在它起作用了:D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-30
    相关资源
    最近更新 更多