【问题标题】:Determine Schema and Table Name During EF DbContext POCO Generation在 EF DbContext POCO 生成期间确定架构和表名
【发布时间】:2014-02-11 17:25:06
【问题描述】:

我正在使用 Entity Framework 5 和“EF 5.x DbContext Generator”提供的 T4 代码生成模板(数据库优先)。我正在尝试将数据库架构和表名作为属性包含在我的实体类中,例如:

public string _SchemaName {
    get {
        return "SCHEMA NAME HERE";
    }
}

public string _TableName {
    get {
        return "TABLE NAME HERE";
    }
}

有没有人幸运地使用上述代码生成模板确定架构/表名称?

【问题讨论】:

  • 介意我问为什么吗?我认为类模型不应该关心商店的实现。也许有一些方法可以通过更好的关注点分离来实现您想要的。

标签: c# oracle entity-framework-5 code-generation dbcontext


【解决方案1】:

我完全同意@gert-arnold,如果您想保持代码清晰,就不应该这样做。使用类属性可能是实现目标的更好方法,但我不知道实体框架中的此类属性,此外,在数据库优先方法中(假设您不会手动更改生成的类)。

我认为不可能的任何方式 - 不仅因为两年内没有人回答您的问题,还因为您可以指定架构的唯一地方(我熟悉)是:

  • .edmx 图表属性(或文件:如果你用文本编辑器打开它,你会看到以下内容-注意XML属性Schema

    <edmx:Edmx ...>
    ...
        <EntityContainer Name="...StoreContainer">
            <EntitySet Name="MyTable1" EntityType="Self.MyTable1" Schema="dbo" store:Type="Tables" />
            ... other tables description
        </EntityContainer>
    ...
    </edmx:Edmx>
    

    查看this question了解更多详情。

  • 覆盖 DbContext 的方法 OnModelCreating()。这至少在 CodeFirst 方法中有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-24
    • 1970-01-01
    • 2019-08-18
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    相关资源
    最近更新 更多