【问题标题】:How to know project is code-first or database-first?如何知道项目是代码优先还是数据库优先?
【发布时间】:2017-05-11 14:29:21
【问题描述】:

在现有项目中,我如何知道它是代码优先还是数据库优先?

项目有这行代码:

public class TestDBContext : DbContext
{
    public DbSet<Player> Players { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
    }
}

并且项目没有.edmx 文件。如果需要任何其他细节,我会分享。

编辑:

Player.cs 类

public class Player
{
    public int PlayerID { get; set; }
    public string PlayerName { get; set; }
}

编辑 12.05.2017

如果我将 database nameconnection string 更改并运行项目,它会创建 database with the new name with all tables。可能这会被打到答案。

【问题讨论】:

  • 任何迁移类?
  • @ErikEJ 你是说 player.cs 类吗?
  • 不,我的意思是具有迁移代码的类(我认为是从 DbMigration 继承)

标签: c# entity-framework ef-code-first db-first


【解决方案1】:

如果这是一个数据库优先的项目,则有:


  • [name].edmx 图表文件及其,[name].Context.tt & .cs
  • 翻译成类的每个表都隐藏在树中,例如 .edmx > .tt
  • onModelCreating中,有一个throw new UnintentionalCodeFirstException()

如果不是,表中的所有类问题都在项目中(没有树)。

【讨论】:

    【解决方案2】:

    我在这里分享我的观察。

    主要有两种实现实体框架的方法。 1. 代码优先 如果选择,它将创建简单的 .cs 文件,开发人员稍后会根据他们的要求对其进行修改。

    1. 数据优先 如果选择,它将创建一个 [name].edmx 文件以及不同文件的层次结构。它包含 .Context.tt 和下面的 .Context.cs 文件。 .Context.cs 文件将具有以下 sn-p 指示在创建时诱导实体模型是否为空或它与任何数据库对象。

      命名空间搜索 { 使用系统; 使用 System.Data.Entity; 使用 System.Data.Entity.Infrastructure;

      public partial class XYZ_MSCRMEntities : DbContext
      {
         public XYZ_MSCRMEntities()
          : base("name=xyz_MSCRMEntities")
         {
      }
      
      protected override void OnModelCreating(DbModelBuilder modelBuilder)
      {
          throw new UnintentionalCodeFirstException();
      }
      
      public virtual DbSet<AnyDatabaseTableOrView> TableOrViewPluralized { get; set; }
      }}
      

    在上面的 sn-p 中,最后一行(DbSet 属性)显示它已经导入了数据库对象,这就是它的“数据优先”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-11
      • 2011-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多