繁体   English   中英

如何获取Entity Framework类继承基类

[英]How to get an Entity Framework class inherit a base class

我有几个类继承自一个包含一些常用实用程序代码的抽象基类。 我想转移到EF进行数据访问,但我仍然希望对象继承基类中的公共代码。 EF类已经从EntityObject继承,所以我不能让它们继承我的基类。 处理这个问题的正确方法是什么? 我的环境是Net 3.5 / C#

对不起,如果你看到我之前的帖子 - 我错过了你问题中的重要内容。

您可以使用部分类。 使您的partial类具有一个内部字段,其中包含您想要的基类实例,并实现所有方法和属性(除非它们已在实体中实现)。 如果您正在尝试,那么,为了允许使用您的实体类,您可以在基类(或部分实体类)中使用public static implicit operator来允许转换而不会有麻烦。

如果你有一个名为MyBaseClass的抽象基类,你可以这样做:

public partial class MyEntityClass
{
    private MyBaseClass _baseClass;

    private MyBaseClass BaseClass
    {
        get
        {
            if (_baseClass == null)
            {
                _baseClass = new MyBaseClass();
            }
            return _baseClass;
        }
    }

    public string BaseClassString
    {
        get
        {
            return BaseClass.BaseClassString;
        }
        set
        {
            BaseClass.BaseClassString = value;
        }
    }

    // etc.

    public static implicit operator MyBaseClass(MyEntityClass e)
    {
        return new MyBaseClass() {
            Property1 = e.Property1,
            Property2 = e.Property2 // etc.
        };
    }

    public static implicit operator MyEntityClass(MyBaseClass b)
    {
        return new MyEntityClass() {
            Property1 = b.Property1,
            Property2 = b.Property2 // etc.
        };
    }
}

如果您仍在使用Visual Studio 2008,我不确定您是否能够完成此任务(尽管有人请随时纠正我)。

但是,如果你使用的是VS2010,那么你可以使用新的T4模板选项(即使是以.net 3.5为目标)。 我要做的是让你的基类继承自EntityObject类,然后修改用于生成要从基类继承的类的t4模板。

如果你还在VS2008中,你可能仍然可以做同样的事情,你只需要手动修改生成的CS文件(每次你改变你的模型),这将被认为是可怕的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM