【问题标题】:Entity Model: How to move Entity Model's generated entity classes to a separate assembly实体模型:如何将实体模型生成的实体类移动到单独的程序集中
【发布时间】:2011-07-27 03:27:16
【问题描述】:

我从创建实体类的数据库中生成了实体模型。

1) 有没有办法为每个类创建单独的文件? 2)我们可以将这些类移动到不同的程序集中吗?例如,如何将这些类移动到我的解决方案中的不同项目?

我想将实体模型从类中分离出来,并使用表示层中的类。

【问题讨论】:

    标签: c# entity-framework


    【解决方案1】:

    您当然可以在单独的项目中创建edmx,但我认为您不能将这些类分成生成的默认文件之外的更多文件。请注意,您不应尝试编辑生成的类,因为这些类在更新时会被覆盖,而且您也很容易破坏内容。

    但是,您可以创建一个public partial class,其名称空间和类声明与每个实体对象相同,以允许您扩展类并添加初始化/验证函数等,从而允许您将每个实体放在自己的用于扩展的类文件。

    更新:

    所有相关的部分类必须在同一个程序集中,并且需要使用与<EntityModel>.Designer.cs 中的原始实体partial class 相同的命名空间和类声明。示例代码见下文。

    namespace YourEntityNamespace
    {
        public partial class YourEntity : EntityObject
        {
            // Add methods and properties to extend the entity class
        }
    }
    

    【讨论】:

    • 你能告诉我如何生成这些部分类吗?示例语法?这些类可以放在单独的程序集中吗?
    【解决方案2】:
    1. 否(在默认的 .edmx 生成器中),因为 VS 的自定义工具属于 IVsSingleFileGenerator 类型,并且只能生成一个文件。
    2. 是的,但您需要自定义对象层代码生成。阅读here。有一个link 展示了如何在项目之间分离模型和生成的类。

    @Chris,部分类不能跨程序集拆分。这里有很多关于这个的问题/答案。

    【讨论】:

    猜你喜欢
    • 2011-03-03
    • 2014-02-22
    • 1970-01-01
    • 2010-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-25
    • 1970-01-01
    相关资源
    最近更新 更多