如何知道项目是代码优先还是数据库优先?
How to know project is code-first or database-first?
在现有项目中,我如何知道它是代码优先还是数据库优先?
项目有这行代码:
public class TestDBContext : DbContext
{
public DbSet<Player> Players { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}
并且项目没有 .edmx
文件。如果需要任何其他细节,我会分享。
编辑:
Player.cs class
public class Player
{
public int PlayerID { get; set; }
public string PlayerName { get; set; }
}
编辑 2017 年 5 月 12 日
如果我从 connection string
和 运行 项目更改 database name
,它会创建 database with the new name
with all tables
。也许这会成为答案。
如果这是一个数据库优先的项目,则有:
- [name].edmx 图表文件,[name].Context.tt & .cs
- 翻译成 class 的每个表都隐藏在树中,如 .edmx > .tt
- 在
OnModelCreating
中,有一个throw new UnintentionalCodeFirstException()
如果不是,表中的所有 class 问题都在项目中(没有树)。
在这里分享我的观察。
主要有两种实现方式Entity Framework。
1.代码优先
如果选择,它将创建简单的 .cs 文件,开发人员稍后会根据他们的要求进行修改。
数据优先
如果选择,它将创建一个 [name].edmx 文件以及不同文件的层次结构。它包含 .Context.tt 和下面的 .Context.cs 文件。
.Context.cs 文件将包含以下代码段,指示诱导实体模型在创建时是空的还是与任何数据库对象一起使用。
命名空间搜索
{
使用系统;
使用 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; }
}}
在上面的代码片段中,最后一行 (DbSet 属性) 表明它已经导入了数据库对象,这就是它的样子 "Data-first"
如果没有.edmx 文件,项目是code-first。
在现有项目中,我如何知道它是代码优先还是数据库优先?
项目有这行代码:
public class TestDBContext : DbContext
{
public DbSet<Player> Players { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}
并且项目没有 .edmx
文件。如果需要任何其他细节,我会分享。
编辑:
Player.cs class
public class Player
{
public int PlayerID { get; set; }
public string PlayerName { get; set; }
}
编辑 2017 年 5 月 12 日
如果我从 connection string
和 运行 项目更改 database name
,它会创建 database with the new name
with all tables
。也许这会成为答案。
如果这是一个数据库优先的项目,则有:
- [name].edmx 图表文件,[name].Context.tt & .cs
- 翻译成 class 的每个表都隐藏在树中,如 .edmx > .tt
- 在
OnModelCreating
中,有一个throw new UnintentionalCodeFirstException()
如果不是,表中的所有 class 问题都在项目中(没有树)。
在这里分享我的观察。
主要有两种实现方式Entity Framework。 1.代码优先 如果选择,它将创建简单的 .cs 文件,开发人员稍后会根据他们的要求进行修改。
数据优先 如果选择,它将创建一个 [name].edmx 文件以及不同文件的层次结构。它包含 .Context.tt 和下面的 .Context.cs 文件。 .Context.cs 文件将包含以下代码段,指示诱导实体模型在创建时是空的还是与任何数据库对象一起使用。
命名空间搜索 { 使用系统; 使用 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; } }}
在上面的代码片段中,最后一行 (DbSet 属性) 表明它已经导入了数据库对象,这就是它的样子 "Data-first"
如果没有.edmx 文件,项目是code-first。