【问题标题】:Get SQL creating new table in Entity Framework获取 SQL 在实体框架中创建新表
【发布时间】:2014-02-16 17:36:08
【问题描述】:

我使用 Entity Framework 6.0.2 作为 ORM,我创建了新类型

public class DataSourceImportReport
{
    public int Id { get; set; }
    public int ImportedCount { get; set; }
    public DateTime ImportDate { get; set; }
    public DataSource DataSource { get; set; }
}

我添加了映射到OnModelCreating 方法

ModelBuilder
    .Entity<DataSourceImportReport>()
    .Map(m => m.ToTable("DataSourceImportReports", dataSourceSchemaName));

我想获取 EF 生成的 SQL 语句以在数据库中添加适当的表。

我该怎么做?

【问题讨论】:

  • 我不太清楚你的问题。为什么需要 sql 语句来创建表,如果你设置了一切正确 ef 在你第一次调用数据库时创建表。

标签: c# .net sql-server entity-framework orm


【解决方案1】:

您可以使用ExecuteCommand() 方法自己创建表,例如

db.ExecuteCommand("CREATE TABLE...");

【讨论】:

  • EF 将在数据库中创建表,我想获取这个创建表的 sql
【解决方案2】:

您可以在 consol 包管理器中使用此代码并生成数据库:

PM> enable-migrations

PM> add-migration a

PM> update-database -verbose

你必须在启动项目中设置连接字符串。

【讨论】:

  • 也就是说,桌子会贫血。没有条件,没有索引,没有高级选项。好的,表高级选项很少使用,但见鬼,唯一约束和索引是某种基线。
  • 是的,正如我所说 - 贫血。见过过滤索引吗?一个与关系无关但用于咳嗽加速查询的索引?分区表?或者计算字段....有一个索引来加速查询?正如我所说 - 贫血。尽可能原始,最小的公分母,对于每个从未读过 SQL 书籍的人来说已经足够了。
  • ok..我认为你应该读一本关于实体框架和 orm 概念的书。
  • 几乎没有。我很久以前写过类似的东西。关键是问题是数据库的自动生成,而我所知道的任何 ORM 都做得很糟糕。不,与某些人的想法相反,ORM 不会消除对这些功能的需求。显然,您从未从事过这样的数据库项目,人们会花一天的时间来调整兜售的迁移脚本,其中包含一些对小数据无用的 sql server 功能。就这样吧。迁移对于真正复杂的数据库工作来说是很糟糕的。
猜你喜欢
  • 1970-01-01
  • 2017-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多