【问题标题】:Entity Framework 4 Generate Database From Model With Multiple SchemasEntity Framework 4 从具有多个模式的模型生成数据库
【发布时间】:2011-04-09 20:16:54
【问题描述】:

我将 EntityFramework 4 与 POCO 类一起使用,但我喜欢将数据库划分为单独的模式。虽然我可以通过首先设计数据库然后生成模型来做到这一点,并且一切正常,但如果我更新模型并选择从模型生成数据库,它会忽略我的所有模式并在默认值下生成所有表(或任何我已在 Database Schema Name 下设置)。

是否可以划分实体并让模型使用这些模式生成数据库?

非常感谢您的帮助。我在 Google 上花了几个小时进行试验,我认为这不可能,但我想我会检查一下。

【问题讨论】:

  • +1 好问题。我猜 EF 团队没有考虑过这样的要求。
  • 我很想知道您通过划分数据库来寻找什么。它可以是安全、空间、速度、归档、. . . .每个问题都有不同的解决方案。

标签: c# sql entity-framework schema


【解决方案1】:

我不相信 EF4 支持这一点 - 正如你所说,这只是单程旅行,即 DB -> 代码。我什至不认为 EFvNext 有任何计划这样做——它是如何工作的?基于代码中的命名空间?

【讨论】:

    【解决方案2】:

    你可以这样设置你的shema:

    public class UserConfiguration : IEntityTypeConfiguration<User>
        {
            public void Configure(EntityTypeBuilder<User> builder)
            {
                builder.ToTable("User", "MySchema");
                builder.Property(a => a.Description).HasMaxLength(2000);
                builder.Property(a => a.BirthDate).HasColumnType("date");
    
            }
        }
    

    你应该像这样在你的 DbContext 中调用它:

     protected override void OnModelCreating(ModelBuilder modelBuilder)
            {
               modelBuilder.ApplyConfigurationsFromAssembly(typeof(UserConfiguration ).Assembly);
    
                modelBuilder.HasDefaultSchema("MySchema");
                base.OnModelCreating(modelBuilder);
            }
    

    【讨论】:

      【解决方案3】:

      如果没有真正的架构支持,EF 就会被淘汰,并且越来越多地使用 SQL 数据库架构来改进数据库的数据库设计。架构已在 SQL Server 2005 或更早版本中。

      这就像发布一个新版本的 .NET 但说它不支持 javascript。模式是数据库开发功能集的基本组成部分。

      我认为它被支持为:[Customer].[Staff] 在 EF 中被支持为 Customer.Staff。所以我们可以有 Customer.Staff.StaffID = 10;等等

      【讨论】:

      • 这并没有解决原发帖人再次谈到的担忧,听起来更像是对英孚的咆哮。
      猜你喜欢
      • 2011-05-30
      • 1970-01-01
      • 1970-01-01
      • 2014-03-22
      • 2011-05-01
      • 2011-04-30
      • 1970-01-01
      • 2011-07-07
      • 2017-06-01
      相关资源
      最近更新 更多